django表单:绑定表单的默认值
问题描述:
使用以下格式:
class Form(forms.Form):
name = forms.CharField(required=False, initial='Hello world')
如果我在视图中执行以下操作:
If I do something like this in the view:
form = Form(request.GET)
if form.is_valid():
name = form.cleaned_data['name']
然后,即使request.GET不包含name的初始值也会丢失名称
作为键。有什么解决方法吗?我希望初始值可以将表格绑定为默认值。
Then initial value of name is lost even if request.GET does not contain name
as key. Is there any workaround? I would like initial values work to bound forms as "default values".
答
通过略微修改Gonzalo的解决方案,这是正确的方式:
By slightly modifying Gonzalo's solution, this is the right way:
class Form(forms.Form):
name = forms.CharField(required=False, initial='Hello world')
def clean_name(self):
if not self['name'].html_name in self.data:
return self.fields['name'].initial
return self.cleaned_data['name']
如果需要此功能,可以查看django-filter应用程序。我是最近才发现的。
If you need this, you may have a look at django-filter app. I have discovered it quite recently.