我正在尝试使用django创建一个条件字段。 "已批准"是一个复选框和" Date_of_approval"是一个日期字段。 "会员"是一个班级,其中"清洁"方法已定义。
我希望在选中已批准的字段后,日期字段成为必填字段。 我使用以下代码获得的错误是' NoneType'对象没有属性' get'
还请帮我确认此代码的放置位置。我在我的模型页面中有它。每当我把它放入我的表格页面时,它都不会识别这些字段。
approved = models.BooleanField()
date_of_approval = models.DateField(blank=True, null=True,)
def clean(self):
cleaned_data = super(Member, self).clean()
approved = cleaned_data.get("approved")
date_of_approval = cleaned_data.get("date_of_approval ")
if approved and date_of_approval :
if approved and not date_of_approval :
raise forms.ValidationError("Invaid input")
return self.cleaned_data
答案 0 :(得分:0)
cleaned_data
用于表单验证,而不是模型验证。要在模型验证期间获取已清理的字段值,请参考self
:
from django.core.exceptions import ValidationError
...
class Member(models.Model):
# field definitions as above
def clean(self):
if self.approved and not self.date_of_approval:
raise ValidationError("Approved members must have a date of approval")
或修复您的表单,以便找到相关字段,但问题中的信息不足以说明您在那里遇到问题的原因。