You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django REST Framework嵌套序列化创建时如何返回关联id列表

实现方案

你当前接口仅返回project_name字段,是因为序列化器未配置关联模型的嵌套输出规则,按以下步骤调整即可返回项目对应的关联id/关联数据列表:

关联逻辑说明

三个模型的关联层级为:Project(1对多)ProjectSite(1对多)Assignment,反向关联的取值锚点就是外键字段上定义的related_name参数,配置时不要写错取值路径。

写法1:返回完整嵌套关联数据

从最内层模型开始逐层定义序列化器:

  1. 最内层Assignment序列化器
from rest_framework import serializers
from .models import Project, ProjectSite, Assignment

class AssignmentSerializer(serializers.ModelSerializer):
    class Meta:
        model = Assignment
        # 按需调整返回字段,仅需要id就只留assignment_id
        fields = ["assignment_id", "assignment_name", "assigned_to_id"]
  1. 中间层ProjectSite序列化器
class ProjectSiteSerializer(serializers.ModelSerializer):
    # 对应Assignment外键site_id配置的related_name="projectsiteidkey"
    assignment_list = AssignmentSerializer(many=True, read_only=True, source="projectsiteidkey")
    class Meta:
        model = ProjectSite
        # 仅需要站点id就只保留site_id
        fields = ["site_id", "site_name", "assignment_list"]
  1. 最外层Project序列化器
class ProjectSerializer(serializers.ModelSerializer):
    # 对应ProjectSite外键project_id配置的related_name="projectid"
    site_list = ProjectSiteSerializer(many=True, read_only=True, source="projectid")
    class Meta:
        model = Project
        fields = ["project_id", "project_name", "site_list"]

写法2:仅返回关联id列表

如果不需要嵌套详情,只需要纯id数组,不用定义多层序列化器,直接用PrimaryKeyRelatedField即可:

class ProjectSerializer(serializers.ModelSerializer):
    # 直接取关联的站点id列表
    site_id_list = serializers.PrimaryKeyRelatedField(
        many=True, 
        read_only=True, 
        source="projectid"
    )
    class Meta:
        model = Project
        fields = ["project_id", "project_name", "site_id_list"]

注意事项

  • 嵌套字段配置read_only=True仅支持GET场景的返回,如果需要通过Project接口同时写入/修改关联的站点、任务数据,需要自行重写序列化器的create/update方法处理嵌套写入逻辑
  • 所有关联字段的source参数必须和对应外键上的related_name完全一致,否则会抛出字段不存在的错误
  • 模型字段中site_name配置的name='project_site_name'是数据库层面的列名配置,不影响序列化器的字段引用,序列化器取模型字段名site_name即可

内容的提问来源于stack exchange,提问作者Vas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 23:33:28