如何在Django中查询指定名称或关联Restaurant的Place对象?
Django 一对一关联查询解决方案
要获取名称为'foo'的Place对象,或关联了Restaurant的Place对象,可通过Django的Q对象实现或逻辑的组合查询,最终返回单个QuerySet,代码如下:
from django.db.models import Q from .models import Place # 组合查询条件:名称为'foo' 或 已关联Restaurant target_places = Place.objects.filter( Q(name='foo') | Q(restaurant__isnull=False) )
代码说明:
Q对象是Django实现复杂查询逻辑的核心工具,|符号代表**或(OR)**关系Q(name='foo'):精准匹配name字段为'foo'的Place实例Q(restaurant__isnull=False):利用一对一关联的反向查询(默认反向关联名为模型小写restaurant),筛选出所有存在关联Restaurant记录的Place对象- 最终返回的
target_places是标准DjangoQuerySet,可直接用于django-ninja接口的响应输出
内容的提问来源于stack exchange,提问作者dfrankow
相关产品推荐
相关产品推荐

