我正在使用Django表单集,我正在try 阻止某些可以部分填写以保存的表单.
表格:
class WeeksForm(forms.ModelForm):
monday = forms.DecimalField(required=False)
tuesday = forms.DecimalField(required=False)
wednesday = forms.DecimalField(required=False)
thursday = forms.DecimalField(required=False)
friday = forms.DecimalField(required=False)
saturday = forms.DecimalField(required=False)
sunday = forms.DecimalField(required=False)
class Meta:
model = Weeks
fields = ('activity', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday')
表单集:
WeeksFormset = modelformset_factory(Weeks, form=WeeksForm, extra=10, can_delete=True)
我使用JS动态生成表单,它会自动填充"活动"域,但问题是,有时用户可能会决定不填写其他域(以工作日、"星期一"、"星期二"等命名的那些域).如果是这种情况,我最终会得到一个我不想保存的"空"表单(并不是真的空,因为"活动"域已填满).
在我看来,我试图以某种方式防止这些表单被保存:
Views.py
if request.method == 'POST':
formset = WeeksFormset(request.POST)
if formset.is_valid():
for form in formset.forms:
# From here is pseudocode, I want that if a form has all the weekdays empty that form is not saved
if form.instance.monday and form.instance.tuesday and ... form.instance.sunday == None:
form.delete()
# End of pseudocode, this approach didn't work
form.instance.user = request.user
formset.save()
return HttpResponseRedirect(reverse("time")
我真的很难解决这个问题,我已经try 了几种方法,但都没有成功.