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

Django REST framework POST请求返回200但数据未存入数据库如何解决

问题原因

你重写了ModelSerializer的create方法,但仅实例化了模型对象,没有执行数据库写入操作,数据仅存在内存中没有完成持久化,因此接口会返回200响应但数据库无新增数据。

修复方案

方案1:删除自定义create方法(推荐)

ModelSerializer默认已经内置了符合常规写入逻辑的create实现,会自动调用模型的save方法完成数据入库,你不需要额外重写该方法,直接删除序列化器中自定义的create函数即可。

方案2:修改自定义create方法补全入库逻辑

如果你需要保留自定义create方法做额外逻辑处理,需要补全入库代码:

class TicketListSerializer(serializers.ModelSerializer):
    class Meta:
        model = TicketListTable
        fields = '__all__'

    def create(self, validated_data):
        # 方式1:实例化后主动调用save完成入库
        instance = TicketListTable(**validated_data)
        instance.save()
        return instance
        
        # 方式2:直接调用模型管理器的create方法
        # return TicketListTable.objects.create(**validated_data)
额外优化建议

你的模型中两个时间字段可以配置自动填充参数,不需要前端请求传值:

class TicketListTable(models.Model):
    ticketListName = models.CharField(max_length=50)
    # 新增时自动填充当前时间
    ticketListCreated = models.DateTimeField(auto_now_add=True)
    # 每次更新时自动刷新为当前时间
    ticketListUpdates = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.ticketListName

    class Meta:
        app_label = "backend"
        db_table = "TicketListTable"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:54:06