2012-08-10 198 views
2

什么时候对模型中相关字段进行验证的适当时间?相关领域的Django模型验证

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

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

这样做是在post_savepre_save信号正确的方式去?

+0

似乎是一个好主意,或者你可以覆盖保存方法(较好的主意恕我直言)。 – 2012-08-10 11:25:05

+0

我会这样做是一个post_save信号。 – Brandon 2012-08-10 12:10:42

回答

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 

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