覆盖Django RF中的序列化器删除方法

时间:2017-05-26 20:43:46

标签: python django django-rest-framework

我有一个继承自django rest framework serializer ModelSerializer的序列化程序。

要覆盖create方法,我可以重新定义create。要重新定义更新方法,我重新定义update。我虽然查看了代码但无法找到覆盖删除的方法。我需要在序列化程序中执行此操作,以便我可以抓取删除用户。

任何想法都将不胜感激!

2 个答案:

答案 0 :(得分:4)

如果你正在使用ModelViewSet,你可以在视图中执行:

class YourViewSetClass(ModelViewSet):

    def destroy(self, request, *args, **kwargs):
       user = request.user # deleting user
       # you custom logic # 
       return super(YourViewSetClass, self).destroy(request, *args, **kwargs)

destroy方法非常简单(只是调用instance.delete()),操作不会委托给序列化程序。 DRF中的序列化程序用于协商与数据库模型之间的外部表示。在这里,您只想删除模型。

答案 1 :(得分:2)

我认为你可以在视图级别做到这一点。

因此,如果您正在使用ModelViewsets,则可以覆盖destory methodperform_destroy并添加您的业务逻辑。