我正在嘗試使用 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.has_changed() and form.is_valid():
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,
'search': search
}
return HttpResponse(tpl.render(ctx, request))
目前,我正在視圖中手動填充,但我很確定有更好的方法來做到這一點。我是否遺漏了部分檔案?
uj5u.com熱心網友回復:
您可以使用setattr:
for key in form.cleaned_data:
setattr(search, key, form.cleaned_data[key])
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/361118.html
標籤:Python 姜戈 django-forms
