[英]Get a foreign key field when using values and annotate
我有這個模型:
class Donation(models.Model):
amount = models.IntegerField()
receipt = models.CharField(max_length=40, blank=True)
donation_date = models.DateTimeField()
donator = models.ForeignKey(User, related_name='donation_donator', blank=True, null=True, on_delete=models.SET_NULL)
validation_date = models.DateTimeField(blank=True, null=True)
然后這個視圖:
def report(request, month=None):
datafilter = Q()
datafilter = datafilter & Q(donation_date__month=month)
top_donors_month = Donation.objects.values('donator').annotate(Sum('amount')).order_by('-amount__sum').filter(datafilter)
top_donors_all = Donation.objects.values('donator').annotate(Sum('amount')).order_by('-amount__sum')
基本上,它返回donator-total_amount_donated關系的列表。 但是查詢返回的字典像這樣:
[{'donator' : 3, 'amount_sum' : 5200}, {'donator' : 2, 'amount_sum' : 1200}, {.....}]
其中3,2,1 ..等是捐贈者pks。 我該如何訪問3的名字呢?
例如
[{'donator' : user1, 'amount_sum' : 5200}, {'donator' : user2, 'amount_sum' : 1200}, {.....}]
代替捐贈者,您必須獲取捐贈者__first_name的值。
嘗試如下
top_donors_month = Donation.objects.values('donator__first_name').annotate(Sum('amount')).order_by('-amount__sum').filter(datafilter)
top_donors_all = Donation.objects.values('donator__first_name').annotate(Sum('amount')).order_by('-amount__sum')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.