【问题标题】:Overriding Djangorest ViewSets Delete Behavior覆盖 Djangorest 视图集删除行为
【发布时间】:2017-11-03 05:10:46
【问题描述】:

我已经定义了一个这样的模型:

class Doctor(models.Model):
    name = models.CharField(max_length=100)
    is_active = models.BooleanField(default=True)

我的序列化器:

class DoctorSerializer(serializers.ModelSerializer):
    class Meta:
        model = Doctor
        fields = ('id', 'name', )

在视图中:

class DoctorViewSet(viewsets.ModelViewSet):
    queryset = Doctor.objects.all()
    serializer_class = DoctorSerializer

现在,我可以使用 http 方法 DELETE 调用 url:'servername/doctors/id/' 来删除医生。但是,我想覆盖此模型的删除行为。我希望,当用户删除一条记录时,它的 is_active 字段设置为 false,而不是实际从数据库中删除该记录。我还想保持 Viewset 的其他行为,如列表、放置、创建。

我该怎么做?我在哪里编写覆盖此删除行为的代码?

【问题讨论】:

    标签: python django django-rest-framework sql-delete django-rest-viewsets


    【解决方案1】:
    class DoctorViewSet(viewsets.ModelViewSet):
        queryset = Doctor.objects.all()
        serializer_class = DoctorSerializer
    
        def destroy(self, request, *args, **kwargs):
            doctor = self.get_object()
            doctor.is_active = False
            doctor.save()
            return Response(data='delete success')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多