Python 是否可以从Django中的Q返回单个值?

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

我正在使用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.annotate(
    cupcake_name=Subquery(Cupcake.objects.filter(id='xxx').values('name')),
)
如果需要将子查询链接到查询集,请参阅此处的子查询文档:

如果您不介意进行两次查询,那么使用literal
Value
表达式会更清楚一些:

from django.db.models import Value

cupcake_name = Cupcake.objects.get(id='xxx').name
self.queryset.annotate(
    cupcake_name=Value(cupcake_name),
)

请分享更多关于如何使用queryset和视图实现的代码