相关领域的 Django 模型验证
Posted
技术标签:
【中文标题】相关领域的 Django 模型验证【英文标题】:Django model validation on related fields 【发布时间】:2012-08-07 16:12:03 【问题描述】:何时是对模型中的相关字段进行验证的合适时间?
例如,如果我有一个与类播放列表有ManyToMany
关系的视频类,当视频更改为“私人”时,它应该从所有播放列表中删除。
在模型的 clean()
方法中执行此操作似乎很危险 - 因为模型可能无法通过验证并且无法保存,但播放列表引用将被删除。
在post_save
或pre_save
信号中这样做是正确的方式吗?
【问题讨论】:
似乎是个好主意,或者您可以覆盖保存方法(恕我直言不太好)。 我会这样做是一个 post_save 信号。 【参考方案1】:你有两个选择:
第一个是使用post_save
信号来完成这项工作。不是pre_save
,因为保存可能会失败,我猜你只想在保存正常的情况下这样做。
其他选项是覆盖模型的 save()
方法,例如:
def save(self, *args, **kwargs):
super(MyModel, self).save(*args, **kwargs)
# do stuff for removing whatever you want to remove
我个人的选择是第一个,因为你处理不同的模型。如果你只需要处理当前的一个,我会做第二个。但这只是个人想法。
【讨论】:
以上是关于相关领域的 Django 模型验证的主要内容,如果未能解决你的问题,请参考以下文章