如何在过滤器上使用注释而不是循环



我使用一个表,该表中的Bid有多个字段,一个名为user的字段另一方面有一个将用户保存在Dealer_serializer中的Dealer表,我有一个bids_count serializer 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)

我找不到您的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_idbid_count是有多少BidsUser和该id相关。我希望这就是你将要实现的目标。如有任何问题,请发表评论。

最新更新