如何通过Django ORM按多对多字段关联展开查询集?
Django ORM展开多对多字段查询方案
要将MyUser的多对多skills字段展开为每条用户-技能对应的独立记录,可以通过跨表取值的方式实现,具体ORM查询语句如下:
from django.db.models import F MyUser.objects.values( 'email', 'city', skills=F('skills__name') ).order_by('email', 'city', 'skills')
说明:
- 使用
values()方法指定需要输出的字段,其中skills__name关联到Skill模型的name字段,通过F()表达式将其重命名为skills,匹配你需要的输出字段名。 order_by()用于保证结果按用户邮箱、城市和技能名称排序,让输出结构更规整。- 该查询会自动关联多对多中间表,将每个用户的每个技能拆分为单独的记录,最终返回5条符合要求的数据。
内容的提问来源于stack exchange,提问作者ShiBil PK
相关产品推荐
相关产品推荐

