Django中的业务逻辑验证:Model或ModelForm?

时间:2018-01-15 12:12:06

标签: python django

假设我有以下型号:

class Location(models.Model):
    name = models.CharField(max_length=32)

class Event(models.Model):
    start = models.DateTimeField()
    end = models.DateTimeField()
    location = models.ManyToManyField(Location)

Event模型有两个不变量:

  • end无法在start
  • 之前
  • Location无法重叠事件

Django中更好的模式是什么:在表单(EventForm.clean_end())或模型(Event.clean())中验证这一点?根据文档,当您在模型中定义clean()方法时,在使用save()时不会自动调用它,因此在操作Form API之外的对象时我无法做到真的看到附加值(除非你自己打电话给full_clean())。另外,在我的情况下,我的应用程序只有一个EventModelForm操纵Event个对象,因此两个选项都同样干。

简而言之:我应该在我的模型或表格中加入这些验证吗?

0 个答案:

没有答案