我有以下具有三个属性的模型,可以根据阅读了解消耗量:
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
我需要模型中的第三个属性来存储前两个属性的总和,我如何在新属性中调用前两个属性
我怀疑你想要这样的东西。
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
。)