使用Django进行条件字段/表单验证

时间:2014-09-02 16:38:00

标签: python django

我正在尝试使用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

1 个答案:

答案 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")

或修复您的表单,以便找到相关字段,但问题中的信息不足以说明您在那里遇到问题的原因。