Python 在编辑过程中解除django模型上的外键关联以进行验证
我有以下型号:Python 在编辑过程中解除django模型上的外键关联以进行验证,python,django,Python,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(),djan
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.
对于foreignkey字段中指定的None,我应该如何使用在
full_clean()
过程中引发的ValidationError来避免此错误。我按照@Mad Wombat的建议,通过在foreignkey上使用null=True
来生成错误,并通过覆盖模型上的clean方法来检查实例上分配给的_是否为None
def clean(self):
if self.assinged_to is None:
raise ValidationError({'assigned_to': "Whatever error"})
当
full\u clean()
调用clean()
方法时,它会根据需要引发验证错误。assigned\u to=models.ForeignKey(user,null=True)可能有帮助如果我不希望数据库被更新为没有人分配给它们的事件,那么这将没有帮助@MadWombat在这种情况下,为什么在验证中不需要为外键分配任何值?我正在验证ajax提交的数据,以便编辑对象@MadWombat