2

我已经定义的模型是这样的:重写Djangorest ViewSets删除行为

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',) 

在View:

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

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

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

回答

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')