Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django模型计算属性_Python_Django_Model - Fatal编程技术网

Python Django模型计算属性

Python Django模型计算属性,python,django,model,Python,Django,Model,我有一个工作申请模型,有3个州 已接受:明确接受 拒绝:明确拒绝 未决:既不明确接受也不拒绝 对于我来说,为我的模型定义一个接受的和一个拒绝的字段是有意义的,这样我就可以显式地设置它们。但是pending属性是基于其他两个属性设置的。。。所以为它设置属性没有意义 我可以为它编写一个方法,比如job.pending(),它返回一个布尔值,它只是(不接受)和(不拒绝)。但是,有没有什么方法可以不编写方法而直接执行作业.pending 只是好奇…您可以覆盖save()方法来执行类似的操作,这样每次更改

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

已接受:明确接受
拒绝:明确拒绝
未决:既不明确接受也不拒绝

对于我来说,为我的模型定义一个
接受的
和一个
拒绝的
字段是有意义的,这样我就可以显式地设置它们。但是
pending
属性是基于其他两个属性设置的。。。所以为它设置属性没有意义

我可以为它编写一个方法,比如
job.pending()
,它返回一个布尔值,它只是
(不接受)和(不拒绝)
。但是,有没有什么方法可以不编写方法而直接执行
作业.pending


只是好奇…

您可以覆盖
save()
方法来执行类似的操作,这样每次更改作业模型时,它都会重新计算挂起的。尽管我同意limelights的观点,
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.

你可以定义一个为什么你不愿意拥有一个
pending()
方法?不是“不愿意”,只是好奇而已。我同意
pending()
将是最优雅的做法,因为这是最少的工作量,不会破坏任何默认行为。