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

如何从Django REST Framework POST请求的request.data中提取字段关联外键保存数据

解决方案

你只需调整TicketSerializer的逻辑处理project_code到Project实例的映射关联即可,原有视图代码无需修改,具体修改如下:

序列化器修改后完整代码

from rest_framework import serializers
from ticketing_app_api.models import Ticket, Project

class TicketSerializer(serializers.ModelSerializer):
    # 定义仅写入的project_code字段,不需要返回给前端
    project_code = serializers.CharField(write_only=True)

    class Meta:
        model = Ticket
        # 新增project_code到字段列表
        fields = ['id', 'ticket_url', 'description', 'user', 'type', 'project_code']
    
    # 校验project_code对应项目是否存在,直接返回查到的Project实例减少重复查询
    def validate_project_code(self, value):
        try:
            return Project.objects.get(project_code=value)
        except Project.DoesNotExist:
            raise serializers.ValidationError("传入的project_code无对应匹配项目")
    
    # 重写创建逻辑关联项目实例
    def create(self, validated_data):
        # 取出校验后得到的Project实例
        project = validated_data.pop('project_code')
        validated_data['project'] = project
        return super().create(validated_data)

接口调用示例

POST请求的请求体按以下格式传参即可正常创建关联对应项目的工单:

{
    "project_code": "你的项目编码",
    "ticket_url": "工单地址",
    "description": "工单描述",
    "user": "提交用户",
    "type": "工单类型"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:57:03