假设我有以下型号:
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
个对象,因此两个选项都同样干。
简而言之:我应该在我的模型或表格中加入这些验证吗?