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
相关产品推荐
相关产品推荐

