Python Django:如何检查用户是否将所有字段留空(或初始值)?
我知道Python Django:如何检查用户是否将所有字段留空(或初始值)?,python,django,django-forms,Python,Django,Django Forms,我知道是否有效()。这不是我想要的。我想检查一下表单上是否填写了任何字段 有什么想法吗 详细说明: 我想让用户选择根本不填写表单。但是,如果他们试图填充它(即:将字段中的值从初始值更改为空值),我想验证它 视图应该是这样的: def get_opinion(request): if request.method == 'POST': f = OpinionForm(request.POST) if form_is_blank(f):
是否有效()。这不是我想要的。我想检查一下表单上是否填写了任何字段
有什么想法吗
详细说明:
我想让用户选择根本不填写表单。但是,如果他们试图填充它(即:将字段中的值从初始值更改为空值),我想验证它
视图应该是这样的:
def get_opinion(request):
if request.method == 'POST':
f = OpinionForm(request.POST)
if form_is_blank(f):
return HttpResponseRedirect(reverse('thank_you_anyway'))
elif f.is_valid():
#Process here
return HttpResponseRedirect(reverse('thanks_for_participating'))
else:
initial = {'weekday': date.today().strftime('%A')}
f = OpinionForm(initial=initial)
return render_to_response(
'get_opinion.html',
{'form': f,},
RequestContext(request)
)
我想要的是表单是空白的() 如果将required=True
放入表单字段或模型blank=False
中,则有效()
应返回False。应为表单中的所有字段设置required=False,并覆盖clean
方法以进行自定义验证。更多信息请参见。我想我必须回答我自己的问题
显然,有一个未记录的表单
函数:已更改()
因此,这将很好地替代表单\u为空()
(当然已还原)。要使此功能适用于实际标记中使用的表单子集,还需要定义
class YourForm(forms.ModelForm):
def full_clean(self):
if not self.has_changed():
self._errors = ErrorDict()
return
return super(YourForm, self).full_clean()
因此,当提示用户修复验证错误时,它不会显示表单中的错误,只有当某些值不是空的(或默认值)时,才需要验证这些表单。使用自定义表单集并将其传递给它。对此,您应该添加更多不同的用例。如果您只关心至少填写一个字段,那么这听起来像是在客户端使用javascript时应该发生的事情。@Matt:谢谢您的建议。我用一些代码详细说明了。如果表单不是空的,你想保存它怎么办?has_change
方法在这方面没有帮助,是吗?为什么要复制f=MyForm({})
案例?对于我的特定用例,我在视图中有多个表单。如果用户开始填写其中一个表单,那么我希望某些字段是必需的。
class YourForm(forms.ModelForm):
def full_clean(self):
if not self.has_changed():
self._errors = ErrorDict()
return
return super(YourForm, self).full_clean()