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

Django如何将嵌套对象保存到不同模型?plan字段必填报错怎么解决

问题根因

报错本质是序列化器校验阶段提前拦截了请求,你在create方法中给子对象补充plan外键的逻辑是在校验通过之后才执行的,而校验阶段PlanEventSerializer默认要求必填plan字段,请求里没传所以直接返回400。

解决方案

修改PlanEventSerializer,将外键plan设置为只读字段,校验时就不会要求前端传入该字段:

class PlanEventSerializer(serializers.ModelSerializer):
    class Meta:
        model = PlanEvent
        fields = '__all__'
        # 新增这行,指定plan为只读字段,不要求请求传入
        read_only_fields = ['plan']

如果不需要在PlanEvent的返回结果中展示plan外键id,也可以直接显式声明需要暴露的字段,排除plan即可:

class PlanEventSerializer(serializers.ModelSerializer):
    class Meta:
        model = PlanEvent
        fields = ['done', 'title']

修改后原有逻辑可以正常运行,创建Plan实例后补充给子PlanEvent的plan字段会正常写入数据库,不会触发校验错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 15:09:03