何时适合对模型中的相关字段进行验证?
例如,如果我有与类播放列表具有ManyToMany
关系的类视频,则当视频更改为“私有”时,应将其从所有播放列表中删除。
在模型的clean()
方法中执行此操作似乎很危险 - 因为模型可能无法通过验证而不能保存,但播放列表引用将被删除。
在post_save
或pre_save
信号中以正确的方式进行吗?
答案 0 :(得分:0)
您有两种选择:
首先使用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
我个人的选择是第一个因为你处理不同的模特。如果你只需要处理当前的那个,我会做第二个。但这只是个人的想法。