在django模型上取消关联外键以在编辑期间进行验证

时间:2016-06-15 16:19:14

标签: python django

我有以下型号:

class Event(models.Model):
    assigned_to= models.ForeignKey(user)
    (...)  # Some other fields

我创建了一个Event实例

event = Event(assigned_to=someuser, **kwargs)
event.save()

如果我在编辑活动时必须使用模型验证功能,

event.assigned_to = None

执行event.full_clean()时,django抱怨它无法设置null外键关系。

Cannot assign None: "Event.assigned_to" does not allow null values.

如果使用在full_clean()期间针对foreignkey字段指定的None而引发的ValidationError,我应该如何解决此错误。

1 个答案:

答案 0 :(得分:0)

我设法通过在@Mad Wombat建议的ForeignKey上使用null=True来生成错误,并通过覆盖模型上的clean方法来检查实例上的assigned_to是否为None

def clean(self):
    if self.assinged_to is None:
        raise ValidationError({'assigned_to': "Whatever error"})

full_clean()调用clean()方法时,它会根据需要引发验证错误。