我有如下定义的相关模型。我想编写一个查询来获取所有产品有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
)
从django-3.2 开始,您还可以使用.alias(…)
[Django-doc]:
from django.db.models import Count
Product.objects.alias(
noptions=Count('product_options')
).filter(
noptions__gt=0
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句