我有两个模型,其中一个模型与其他实体具有ForeignKey关系。问题是,ModelB中data_start
字段中的日期必须与ModelA中date_end
中的日期不相等,并且要大一些。我该如何在ModelB中进行比较(规则)并保存?
class ModelB(models.Model):
date_start = models.DateTimeField('')
date_end = models.DateTimeField('')
class ModelA(models.Model):
name = models.CharField(...)
date_start = models.DateTimeField('')
date_end = models.DateTimeField('')
resource = models.ForeignKey(ModelB,...)
答案 0 :(得分:1)
我认为从ModelA
检查此条件是更正确的,因为在您的结构中,一个ModelA
实例可以有多个ModelB
实例,并且不清楚使用哪个实例ModelA
比较日期的变体。
于ModelA
中的override save() method,并在那里检查条件
class ModelA(models.Model):
name = models.CharField(...)
date_start = models.DateTimeField('')
date_end = models.DateTimeField('')
resource = models.ForeignKey(ModelB,...)
def save(self, *args, **kwargs):
if self.date_end <= self.resource.date_start:
raise Exception("resource.date_start can't be equal or grater then date_end")
super().save(*args, **kwargs)