如何在Django中使用count进行反向关系查询

迪克森有情

我有如下定义的相关模型。我想编写一个查询来获取所有产品product_options我有一种方法可以实现这一点或如何解决我尝试的解决方案。我在下面粘贴了我的解决方案。

# 尝试的解决方案

Product.objects.filter(product_options__count__gt=0)

# 定义的模型

class Product(models.Model):
    name = models.CharField(max_length=200)


class ProductOption(models.Model):
    name = models.CharField(max_length=200)
    product = models.ForeignKey(
        Product,
        on_delete=models.PROTECT,
        related_name='product_options'
    )

威廉·范·翁塞姆

您可以使用.annotate()[Django-doc]然后使用.filter(…)[Django-doc]

from django.db.models import Count

Product.objects.annotate(
    noptions=Count('product_options')
).filter(
    noptions__gt=0
)

,您还可以使用.alias(…)[Django-doc]

from django.db.models import Count

Product.objects.alias(
    noptions=Count('product_options')
).filter(
    noptions__gt=0
)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章