覆盖Djangorest ViewSets删除行为

时间:2017-06-01 22:15:06

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

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

JValue

My Serializer:

JValue jv = actualObject as JValue;
if(jv != null)
{
    bool b = (bool)jv.Value;
}

在视图中:

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

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

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

1 个答案:

答案 0 :(得分: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')