簡體   English   中英

使用值並注釋時獲取外鍵字段

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM