什么时候对模型中的相关字段进行验证合适?
例如,如果我有一个ManyToMany
与类播放列表有关系的视频类,当视频更改为“私有”时,它应该从所有播放列表中删除。
在模型的方法中这样做clean()
似乎很危险 - 因为模型可能无法通过验证并且无法保存,但播放列表引用将被删除。
是否以正确的方式进行操作post_save
或发出信号?pre_save
什么时候对模型中的相关字段进行验证合适?
例如,如果我有一个ManyToMany
与类播放列表有关系的视频类,当视频更改为“私有”时,它应该从所有播放列表中删除。
在模型的方法中这样做clean()
似乎很危险 - 因为模型可能无法通过验证并且无法保存,但播放列表引用将被删除。
是否以正确的方式进行操作post_save
或发出信号?pre_save
你有两个选择:
第一个是使用post_save
完成这项工作的信号。不是 a pre_save
,因为保存可能会失败,我猜你只想在保存正常的情况下这样做。
其他选项是覆盖模型的save()
方法,例如:
def save(self, *args, **kwargs):
super(MyModel, self).save(*args, **kwargs)
# do stuff for removing whatever you want to remove
我个人的选择是第一个,因为你处理不同的模型。如果你只需要处理当前的一个,我会做第二个。但这只是个人想法。