Python 是否可以从Django中的Q返回单个值?
我正在使用Django ORM,我想做如下事情:Python 是否可以从Django中的Q返回单个值?,python,django,django-models,django-orm,Python,Django,Django Models,Django Orm,我正在使用Django ORM,我想做如下事情: self.queryset.annotate(cupcake_name=Q(baked_goods__frosted_goods__cupcakes__cupcake_id='xxx')) 但是以某种方式返回单个纸杯蛋糕名称字段值,以便我可以将其用作数据属性。假设您拥有纸杯蛋糕id,并且希望在单个查询中执行此操作,则可以使用子查询: from django.db.models import Subquery self.queryset.ann
self.queryset.annotate(cupcake_name=Q(baked_goods__frosted_goods__cupcakes__cupcake_id='xxx'))
但是以某种方式返回单个纸杯蛋糕名称字段值,以便我可以将其用作数据属性。假设您拥有纸杯蛋糕id,并且希望在单个查询中执行此操作,则可以使用子查询
:
from django.db.models import Subquery
self.queryset.annotate(
cupcake_name=Subquery(Cupcake.objects.filter(id='xxx').values('name')),
)
如果需要将子查询链接到查询集,请参阅此处的子查询文档:
如果您不介意进行两次查询,那么使用literalValue
表达式会更清楚一些:
from django.db.models import Value
cupcake_name = Cupcake.objects.get(id='xxx').name
self.queryset.annotate(
cupcake_name=Value(cupcake_name),
)
请分享更多关于如何使用queryset和视图实现的代码