Вы можете попробовать создать представление на основе классов вместо функций на основе функции и импортировать миксин форм.
views.py
class Index(FormView):
template_name = 'index.html'
form_class = IndexForm
def get(self, request, *args, **kwargs):
return super().get(request, *args, **kwargs)
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
rest_list = Restaurant.objects.order_by('-restname')
query_results = Restaurant.objects.all()
region_list = regionChoiceField()
context['rest_list'] = rest_list
context['query_results'] = query_results
context['region_list'] = region_list
context['form'] = IndexForm()
return context
def post(self, request, *args, **kwargs):
form = self.get_form()
if form.is_valid():
region_list = request.POST.get('region_list')
print("region_list - ", region_list)
return redirect(reverse('NextClassViewYouWantToRedirect'))
models.py (такой же как у вас)
class Restaurant(models.Model):
restname = models.CharField(max_length=200) # Field name made lowercase.
phone = models.IntegerField()
address = models.CharField(max_length=200)
cuisine = models.CharField(max_length=200)
region = models.CharField(max_length=200)
last_modify_date = models.DateTimeField()
created = models.DateTimeField()
def __str__(self):
return self.restname
forms.py
from django import forms
from django.forms import Widget
class IndexForm(forms.Form):
def __init__(self, *args, **kwargs):
self.request = kwargs.pop('request', None)
super().__init__(*args, **kwargs)
# self.error_class = ErrorListMsg
region_list = forms.ChoiceField(choices= AnyChoiceTupleYouWantToBeDisplayed, required=False,
widget=forms.Select())
def clean(self):
form_data = self.cleaned_data
index.html (такой же как у вас)
<body>
<form method="post" name="dropdown">{% csrf_token %}
{{ region_list }}
</form>
<table>
{% for rest in query_results %}
<tr>
<td>{{ rest.restname }}</td>
</tr>
{% endfor %}
</table>
</body>
Кроме того, вам потребуется добавить то же самое в ваш файл urls.py (я полагаю, вы уже сделали это)
urls.py
from django.conf.urls import url, include
from .views import *
urlpatterns = [
url(r'^$', index.as_view(), name='index'),
]
Дайте мне знать, если это работает.Ура :) 1030 *