根据来自其他模型的另一个值在“模型”字段中设置一个值

时间:2020-03-06 18:09:20

标签: python django python-3.x django-models

我有两个模型,其中一个模型与其他实体具有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,...)

1 个答案:

答案 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)