Djando更新模型数据

时间:2018-03-27 06:17:38

标签: python django

我想更新模型的数据。我正在使用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)
在serializers.py

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()?我的代码有什么问题?我应该如何解决这个问题?

1 个答案:

答案 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'