Dic*_*ful 5 python django django-models
我有如下定义的相关模型。我想编写一个查询来获取所有具有Product_options的产品。我有一种方法可以实现这一目标或如何实现我尝试的解决方案。我已将我的解决方案粘贴在下面。
# 尝试的解决方案
Product.objects.filter(product_options__count__gt=0)
Run Code Online (Sandbox Code Playgroud)
# 定义的模型
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'
)
Run Code Online (Sandbox Code Playgroud)
您可以使用.annotate()\xc2\xa0 [Django-doc],然后使用.filter(\xe2\x80\xa6)\xc2\xa0 [Django-doc]:
from django.db.models import Count\n\nProduct.objects.annotate(\n noptions=Count(\'product_options\')\n).filter(\n noptions__gt=0\n)Run Code Online (Sandbox Code Playgroud)\n从django-3.2开始,您还可以使用.alias(\xe2\x80\xa6)\xc2\xa0 [Django-doc]:
from django.db.models import Count\n\nProduct.objects.alias(\n noptions=Count(\'product_options\')\n).filter(\n noptions__gt=0\n)Run Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1080 次 |
| 最近记录: |