Django模型计算属性

时间:2013-06-27 14:41:22

标签: python django model

我的模型是一个工作申请,有3个州。

接受:明确接受
拒绝:明确拒绝了 待定:既未明确接受也未拒绝

我为我的模型定义acceptedrejected字段是有道理的,所以我可以明确地设置它们。但是pending属性是根据其他两个来调节的...所以为它设置属性没有意义。

我可以为它编写一个方法,比如job.pending(),它返回一个只有( not accepted ) and (not rejected)的布尔值。但有没有办法在不编写方法的情况下执行job.pending

好奇......

1 个答案:

答案 0 :(得分:2)

您可以覆盖save()方法来执行此类操作,以便每次更改作业模型时重新计算待处理的内容。虽然我同意这一点,pending()方法也不错。

class Job(models.Model):
    accepted = ...
    reject = ...
    pending = ... (Boolean Fields)

    def save(self, *args, **kwargs):
        self.pending = (not self.accepted) and (not self.rejected)
        super(Job, self).save(*args, **kwargs) # Call the "real" save() method.

https://docs.djangoproject.com/en/dev/topics/db/models/#overriding-predefined-model-methods