我想从具有相同外键值的字段中检索所有值,然后我必须添加这些值并将其显示在响应中。
status = models.CharField(
max_length=50,
choices=WALLET_STATUS_CHOICES,
default='cash')
merchant = models.ForeignKey(
merchant_models.Merchant,
db_index=True,
on_delete=models.CASCADE,
related_name='merchant12',
null=True,
blank=True)
cheque_no = models.CharField(
max_length=100,
null=True,
blank=True)
cheque_date= models.DateTimeField()
recharge_amount=models.FloatField(null=True, blank=True, default=0.0)
def __unicode__(self):
return str(self.name)
我必须获得具有相同商家ID的所有充值值,然后我必须添加这些值并且必须显示。我必须在“商家/身份证”中获得此总和url.is在django中有任何方式吗?
答案 0 :(得分:0)
假设您的模型名称是EXA,而merchant_id是商家的ID,那么。
merchant_obj = Merchant.objects.get(id=merchant_id)
objects = EXA.objects.filter(merchant=merchant_obj)
total_recharge = 0
for object in objects:
total_recharge += object.recharge_amount
print total_recharge
或者你可以使用聚合
from django.db.models import Sum
merchant_obj = Merchant.objects.get(id=merchant_id)
total_recharge = EXA.objects.filter(merchant=merchant_obj).aggregate(Sum('recharge_amount'))
print total_recharge
答案 1 :(得分:0)
假设您的型号名称为“交易”。 如果您可以在逻辑中的某个位置访问商家对象:
qs = Transaction.objects.filter(merchant=merchant)
或者,如果您知道merchant_id的外键ID:
qs = Transaction.objects.filter(merchant_id=merchant_id)
然后你可以在Django中使用aggregate and Sum函数:
from django.db.models import Sum
qs.aggregate(Sum('recharge_amount'))
或者全部排成一行:
from django.db.models import Sum
total_recharge = Transaction.objects.filter(
merchant_id=merchant_id
).aggregate(
Sum('recharge_amount'))