Как вызвать свойство из значений в django
Мне нужно значение свойства, которое вызывается через вызов values, чтобы потом использовать в методе union так используемая модель
class Bills(models.Model):
salesPerson = models.ForeignKey(User, on_delete = models.SET_NULL, null=True)
purchasedPerson = models.ForeignKey(Members, on_delete = models.PROTECT, null=True)
cash = models.BooleanField(default=True)
totalAmount = models.IntegerField()
advance = models.IntegerField(null=True, blank=True)
remarks = models.CharField(max_length = 200, null=True, blank=True)
created = models.DateTimeField(auto_now_add=True)
update = models.DateTimeField(auto_now=True)
class Meta:
ordering = ['-update', '-created']
def __str__(self):
return str(self.purchasedPerson)
@property
def balance(self):
return 0 if self.cash == True else self.totalAmount - self.advance
когда я вызываю модель как
bills = Bills.objects.all()
Я могу вызвать свойство balance как
for bill in bills:
bill.balance
нет проблем в приведенном выше методе, но мне нужно использовать счета в объединении с другой моделью, поэтому нужны фиксированные значения для вызова
я вызываю метод как
bill_trans = Bills.objects.filter(purchasedPerson__id__contains = pk,
cash = False).values('purchasedPerson',
'purchasedPerson__name', 'cash',
'totalAmount', 'id', 'created')
вместо 'totalamount' мне нужен баланс, как я могу подойти к этому шагу
вы можете annotate
остаток и включить его в свою values
bill_trans = Bills.objects.filter(purchasedPerson__id__contains = pk,
cash = False).annotate(balance=(F('totalAmount') - F('advance')).values('purchasedPerson',
'purchasedPerson__name', 'cash',
'balance', 'id', 'created')
Кроме того, я предлагал, чтобы поле advance не имело значения null и вместо этого давало default
нулевое значение