我想更新模型的数据。我正在使用Django Rest Framework。我正在将系统保存的用户数据保存到model.I在views.py中写道
class InfoViews(viewsets.ModelViewSet):
queryset = Info.objects.all()
serializer_class = InfoSerializer
lookup_field = 'id'
def update(self,request, *args, **kwargs):
data = request.data
info_serializers = InfoSerializer(data = data)
if info_serializers.is_valid(raise_exception=True):
info_serializers.save()
return JsonResponse(info_serializers.data)
class InfoSerializer(serializers.ModelSerializer):
created_time = serializers.DateTimeField(required=False)
class Meta:
model = Info
fields = '__all__'
在models.py
中class Info(models.Model):
username = custom_fields.NotEmptyCharField(max_length=100, unique=True)
email = models.EmailField()
password = custom_fields.NotEmptyCharField(max_length=100)
class Meta:
db_table = 'info'
当我运行此代码时,总是在我更新记录时,会创建新记录。这是否导致info_serializers.save()的save()?我的代码有什么问题?我应该如何解决这个问题?
答案 0 :(得分:2)
只需删除info_serializers.save()
即可解决您的问题。
我想为你补充一些建议,
您不需要覆盖update()
,因为ModelViewSet
类默认为您执行所有操作,请参阅this official DRF doc
仅使用CRUD
应用程序的类定义以及default router,如下所示
class InfoViews(viewsets.ModelViewSet):
queryset = Info.objects.all()
serializer_class = InfoSerializer
lookup_field = 'id'