Заполнение объекта Python с помощью Django Form
Я пытаюсь использовать форму Django для заполнения объекта Python (не модели Django). У меня такое ощущение, что я могу только либо:
- постройте простую форму и заполните ее вручную
- использовать модель Django в качестве прокси
Дополнительная сложность заключается в том, что форма отправляет GET-запрос
Класс
class Search:
def __init__(self):
self.min_area = 0
self.max_area = 999
Форма
from django import forms
class MainSearchForm(forms.Form):
min_area = forms.IntegerField(label="Minimum", required=False)
max_area = forms.IntegerField(label="Maximum", required=False)
Вид
from django.http import HttpResponse
from django.template import loader
from front.forms.search.main import MainSearchForm
from front.gears.search import Search
def main(request):
search = Search()
form = MainSearchForm(request.GET)
# manual populating i want to avoid
if form.is_bound:
search.min_area = form.cleaned_data['min_area']
search.max_area = form.cleaned_data['max_area']
tpl = loader.get_template('front/search/main.html')
ctx = {
'form': form
}
return HttpResponse(tpl.render(ctx, request))
На данный момент я заполняю вручную в представлении, но я уверен, что есть лучший способ сделать это. Может быть, я упустил какую-то часть документации?
Вы можете использовать setattr
:
for key in form.cleaned_data:
setattr(search, key, form.cleaned_data[key])