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

Django Rest Framework多级可写嵌套序列化器400错误求助

问题分析与解决方案

你的多级可写序列化器出现400错误,核心原因有两个:模型字段拼写错误,以及顶级序列化器未正确调用子序列化器的创建逻辑,以下是具体修复步骤:


问题1:Tasks模型外键字段拼写错误

Tasks模型里的外键字段写成了colmun(少了字母u),导致创建Task时无法关联到Column,触发数据库字段不存在的错误,直接导致序列化验证失败。

修复代码(models.py):

class Tasks(models.Model):
    task_title = models.CharField(max_length=255, null=None)
    task_description = models.TextField(null=True, blank=True)
    task_created = models.DateTimeField(default=timezone.now)
    task_finish = models.DateTimeField(null=True, blank=True)
    # 修复拼写错误:colmun → column
    column = models.ForeignKey(
        to=Columns, on_delete=models.CASCADE, related_name='tasks')

    def __str__(self) -> str:
        return str(self.task_title)

问题2:BoardsSerializer未正确处理Tasks数据

当前BoardsSerializer的create方法中,只是从column_data里弹出了tasks字段但未实际创建Task,且直接用Columns.objects.create创建列,没有调用ColumnsSerializer的创建逻辑(该逻辑负责处理Task的创建),导致嵌套的Task数据无法被解析和写入。

修复代码(serializers.py):

class BoardsSerializer(serializers.ModelSerializer):

    columns = ColumnsSerializer(many=True)
    name = serializers.CharField(source='board_name')

    class Meta:
        model = Boards
        fields = ['id', 'name', 'columns', 'board_creator']
        read_only_fields = ['id']
        extra_kwargs = {
            'board_creator': {'write_only': True}
        }

    def create(self, validated_data):
        columns_data = validated_data.pop('columns')
        board = Boards.objects.create(**validated_data)
        for column_data in columns_data:
            # 调用ColumnsSerializer创建列,自动触发其内部的Task创建逻辑
            column_serializer = ColumnsSerializer(data=column_data)
            if column_serializer.is_valid():
                column_serializer.save(board=board)
        return board

调试辅助(可选)

如果仍有错误,可在views.py的POST方法中打印序列化器的错误详情,快速定位问题:

response.status_code = status.HTTP_400_BAD_REQUEST
# 打印错误信息用于调试
print(serializer.errors)
response.data = serializer.errors
return response

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 12:11:05