如何在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)