2

什么时候对模型中的相关字段进行验证合适?

例如,如果我有一个ManyToMany与类播放列表有关系的视频类,当视频更改为“私有”时,它应该从所有播放列表中删除。

在模型的方法中这样做clean()似乎很危险 - 因为模型可能无法通过验证并且无法保存,但播放列表引用将被删除。

是否以正确的方式进行操作post_save或发出信号?pre_save

4

1 回答 1

0

你有两个选择:

第一个是使用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

我个人的选择是第一个,因为你处理不同的模型。如果你只需要处理当前的一个,我会做第二个。但这只是个人想法。

于 2012-08-10T13:29:47.103 回答