Django - 如何在保存和更新模型中调用模型中的方法调用

时间:2017-01-04 16:33:53

标签: python django

我有以下Django模型,我想创建一个方法(称为create),它根据子TransactionTask类模型中is_taskcomplete中的False值的数量动态填充和更改TransactionDateTime模型类中的status字段。 。我开始尝试创建下面的创建方法,但我迷路了。任何帮助将不胜感激。提前谢谢。

@python_2_unicode_compatible  # only if you need to support Python 2
class TransactionDateTime(models.Model):
    room = models.ForeignKey(Room, on_delete = models.CASCADE)
    start_dy = models.DateField()
    end_dy = models.DateField(blank=True, null=True)

    def create(self):
        t1 = TransactionDateTime.objects.get(pk=self.pk)
        qy = t1.transactiontask_set.all()
        value = qy.filter(is_taskcomplete = False).count()
        if value > 0:
            return "Complete"
        else:
            return "Incomplete"


    status = TransactionDateTime.create(self)

    def __str__(self):
        return str(self.start_dt)




@python_2_unicode_compatible  # only if you need to support Python 2
class TransactionTask(models.Model):
    transactiondatetime = models.ForeignKey(TransactionDateTime, on_delete = models.CASCADE)
    is_taskcomplete = models.BooleanField(default = False)


def __str__(self):
    return str(self.transtaskname)

1 个答案:

答案 0 :(得分:0)

我仍然不确定你为什么这样做。如果要在字段中存储数据,则需要定义字段;如果你想有一个方法来计算该字段的值,那么你只需编写一个普通的方法,并让该方法直接为该字段赋值。

status = models.CharField(max_length=10, blank=True)

def create(self):
    qy = self.transactiontask_set.all()
    value = qy.filter(is_taskcomplete = False).count()
    if value > 0:
        self.status = "Complete"
    else:
        self.status = "Incomplete"

(我还认为create对于一个没有创建任何东西的方法来说是一个奇怪的名字,但只是为一个字段提供一个值,但没关系。)