如何在另一个属性中使用一个属性?姜戈

问题描述 投票:0回答:1

我有以下具有三个属性的模型,可以根据阅读了解消耗量:

class ConsElect(models.Model):
    pgd = models.ForeignKey(TipoPGD, on_delete=models.CASCADE, related_name='consumoelect')
    data= models.DateField(default=datetime.now)  
    read_morning = models.IntegerField(default=0)
    read_day = mod

def get_rm(self):
    c_m = list(ConsElect.objects.filter(data__gt=self.data).values('read_morning')[0:1])    
    return ((c_m[0]['read_morning '] - self.read_morning ))    
    cons_m= property(get_rm)

def get_rd(self):
    c_d = list(ConsElect.objects.filter(data__gt=self.data).values('read_day')[0:1])    
    return ((c_d[0]['read_day'] - self.read_day))    
    cons_d= property(get_rd)

def get_total(self):             #It's not correct, I don't know how to implement it
    return cons_d + cons_m       #I need to get the sum of the above two properties
 

我需要模型中的第三个属性来存储前两个属性的总和,我如何在新属性中调用前两个属性

python django
1个回答
0
投票

我怀疑你想要这样的东西。

class ConsElect(models.Model):
    pgd = models.ForeignKey(TipoPGD, on_delete=models.CASCADE, related_name='consumoelect')
    data= models.DateField(default=datetime.now)  
    read_morning = models.IntegerField(default=0)
    read_day = mod

    @property
    def cons_m(self):
        c_m = list(ConsElect.objects.filter(data__gt=self.data).values('read_morning')[0:1])    
        return ((c_m[0]['read_morning '] - self.read_morning ))    

    @property
    def cons_d(self):
        c_d = list(ConsElect.objects.filter(data__gt=self.data).values('read_day')[0:1])    
        return ((c_d[0]['read_day'] - self.read_day))    

    def get_total(self): 
        return self.cons_d + self.cons_m 

A

property
通过实例属性引用会导致调用该属性的 getter。通常,您使用
property
作为装饰器,因为您很少需要访问单独名称下的 getter。 (如果您需要访问吸气剂,您可以通过
fget
本身的
property
属性访问它,例如
cons_m.fget
。)

© www.soinside.com 2019 - 2024. All rights reserved.