1

我有一个模型,它是一个工作申请,有 3 个状态。

Accepted:明确接受
Rejected:明确拒绝
Pending:既不明确接受也不拒绝

accepted为我的模型定义一个和一个字段对我来说很有意义rejected,因此我可以显式设置它们。但是该pending属性是基于其他两个条件的……所以为它设置一个属性没有意义。

我可以为它写一个方法,就像job.pending()返回一个布尔值一样( not accepted ) and (not rejected)。但是有什么方法可以job.pending不写方法吗?

只是好奇...

4

1 回答 1

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

于 2013-06-27T15:00:31.543 回答