如何使用注释代替过滤器循环

时间:2018-12-17 06:19:57

标签: django django-models

我使用一个表Bid在此表中具有多个字段,另一个名为user的字段具有一个Dealer表,该表将用户保存在Dealer_serializer中,我有一个bids_count序列化器Method字段,该字段返回要在Bid表中使用的每个用户计数,我想改用注解循环过滤器!以获得每个用户在出价表中的数量。 如果我的想法不正确,请解释一下我到底在做什么注释?

class Dealer(User):
    car_exhibition = models.CharField(max_length=200, blank=True, null=True)
    phone = models.CharField(max_length=11, blank=True, null=True)
    city = models.ForeignKey('locations.City', blank=True, null=True)
    address = models.TextField(max_length=500)

class Bid(models.Model):
    auction = models.ForeignKey('Auction')
    user = models.ForeignKey('users.User')
    step = models.BigIntegerField()
    price = models.BigIntegerField()

created_time = models.DateTimeField(auto_now=True)

1 个答案:

答案 0 :(得分:0)

我找不到您的DealerBid的关系。但是对于User,您可以使用注释:

User.objects.annotate(bids_count=Count('bid')).values('id', 'bids_count')

因此,您将拥有:

<QuerySet [{'id': 1, 'bids_count': 3}, {'id': 2, 'bids_count': 10}, ..., >

iduser_id,而bid_count是多少BidsUserid相关。 我希望这是您要实现的目标。如有任何疑问,请发表评论。