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



我有以下模型:

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

我创建了一个事件实例

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()期间为外键字段指定的 None 引发的 ValidationError 来获取错误。

我设法按照 Wombat 的建议在外键上使用null=True@Mad并覆盖模型上的 clean 方法来检查实例上的assigned_to是否不是 None

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

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

最新更新