我有一个模型,代表两个用户之间的交易,就像这样:
class Transaction(models.Model):
buyer = models.ForeignKey(
Person, on_delete=models.SET_NULL, null=True, related_name="bought"
)
seller = models.ForeignKey(
Person, on_delete=models.SET_NULL, null=True, related_name="sold"
)
product = models.ForeignKey(Product, on_delete=models.SET_NULL, null=True)
我希望能获取每个用户的交易次数(无论是作为买家还是卖家)。如果我只想统计一个字段,我只需执行以下操作:
Transaction.objects.values('seller').annotate(Count('seller'))
但是我无法在一个查询中同时处理两个字段。是否有方法可以实现? 谢谢。
distinct=True
?我尝试了不加这个参数,但得到的模型总数很奇怪,无法解释。当我加上这个参数时,可以完美地将多个模型的计数相加。 - blueblob26distinct
使用SQL中的DISTINCT
,可以防止重复计算相同的对象。如果没有DISTINCT
,由于连接了多个表,这种情况可能会发生。这个Django问题解释了为什么这是一个问题。 - Lotram