python - Django 模型计算属性

标签 python django model

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

已接受:明确接受
拒绝:明确拒绝
待定:既没有明确接受也没有拒绝

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

我可以为其编写一个方法,例如 job.pending() ,它返回一个 bool 值,该 bool 值只是(不接受)和(不拒绝)。但是有什么方法可以在不编写方法的情况下执行 job.pending 吗?

只是好奇……

最佳答案

您可以重写 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

关于python - Django 模型计算属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17346209/

相关文章:

ruby-on-rails - 如何更改 Rails 脚手架中的默认模型模板?

python - Django - 如何显示下拉值而不是对象?

python CGI : upload error

python - 为什么空闲 Python 线程消耗高达 90% 的 CPU?

mysql - Django迁移错误:'name'字段没有默认值

asp.net-mvc - 如何使用 asp.net MVC razor 将两个模型组合成一个模型并将其传递给 View

caching - Ember 缓存模型

python - python字典中的函数

python - 如何按用户定义的顺序对列表中的列表进行排序?

python - Django:如何禁用模型中的排序