我有一个类似的模型:
class Product():
tags = models.ManyToManyField(Tag)
class Tag():
slug = models.CharField()
class Transaction():
product = models.ForeignKey(Product)
store = models.ForeignKey(Store)
class Store()
我想知道在执行聚合时是否有排除某些行的方法。例如,我想知道有多少交易与我的每个商店相关,但我想计算包含特定标签的产品的交易,但不包括包含另一个标签的交易
例如,假设我有一个可口可乐产品,其标签是“饮料”和“苏打”,我想知道如何计算有“饮料”标签但没有“苏打”标签的产品的交易
我试过这个,但不起作用:
Store.objects.annotate(
non_soda_transacion_count=Count("transactions", filter=Q(transactions__product__tags__slug="drink") & ~Q(transactions__product__tags__slug="soda")
)
你有什么线索吗
我正在使用Django 2.2.13
目前没有回答
相关问题 更多 >
编程相关推荐