【问题标题】:Django model validation on related fields相关领域的 Django 模型验证
【发布时间】:2012-08-07 16:12:03
【问题描述】:

何时是对模型中的相关字段进行验证的合适时间?

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

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

post_savepre_save 信号中这样做是正确的方式吗?

【问题讨论】:

  • 似乎是个好主意,或者您可以覆盖保存方法(恕我直言不太好)。
  • 我会这样做是一个 post_save 信号。

标签: django django-models django-signals django-validation


【解决方案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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    • 2012-03-30
    • 2011-09-11
    • 2015-08-12
    • 2011-10-09
    相关资源
    最近更新 更多