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

如何在Django中使用count进行反向关系查询,django,django-3.2,Django,Django 3.2,我有如下定义的相关模型。我想写一个查询,以获取所有具有产品选项的产品。我有一种方法可以实现这一点,或者如何实现我尝试的解决方案。我已将我的解决方案粘贴在下面 #尝试解决方案 #定义模型 您可以使用,然后: 您可以通过此查询轻松地完成此操作 Product.objects.filter(product_options__isnull=False) 它将发送那些没有产品选项的产品如果一个产品有多个产品选项s,它将多次检索相同的产品。因此,使用.distinct()可能更好。糟糕,我在答案中编辑了文

我有如下定义的相关模型。我想写一个查询,以获取所有具有产品选项的产品。我有一种方法可以实现这一点,或者如何实现我尝试的解决方案。我已将我的解决方案粘贴在下面

#尝试解决方案

#定义模型

您可以使用,然后:


您可以通过此查询轻松地完成此操作

Product.objects.filter(product_options__isnull=False)

它将发送那些没有产品选项的产品

如果一个
产品
有多个
产品选项
s,它将多次检索相同的
产品
。因此,使用
.distinct()
可能更好。糟糕,我在答案中编辑了文本,它将只发送那些没有产品选项的产品。
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'
    )

from django.db.models import Count

Product.objects.annotate(
    noptions=Count('product_options')
).filter(
    noptions__gt=0
)
from django.db.models import Count

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