我正在尝试覆盖泛型中的delete方法。使用以下代码段检索UpdateDestroyAPIView类。:-
视图.py
class ArtistView(generics.RetrieveUpdateDestroyAPIView):
serializer_class = ArtistSerializer
queryset = Users.objects.filter(user_type='artist')
在序列化程序中.py
class ArtistProfileSerializer(serializers.ModelSerializer):
class Meta:
model = Profile
fields = ('profile_pic_url','cover_pic_url','full_name','genre','location')
class ArtistSerializer(serializers.ModelSerializer):
profiles = ArtistProfileSerializer(many=False)
class Meta:
model = Users
fields = ['id','user_type', 'email', 'profiles','username']
def delete(self, instance, *arg, **kwargs):
profile = instance.profiles
profile.delete()
在urls.py 中
urlpatterns = [
path('all-artist/', views.ArtistListView.as_view()),
path('all-artist/<int:pk>', views.ArtistView.as_view())]
您不需要在Serializer中定义delete()
方法(当然也不需要在Meta定义中(。
删除逻辑应该为您处理,因为您从视图中的RetrieveUpdateDestroyAPIView
派生。
如果要添加自定义逻辑,则可以覆盖视图中的perform_destroy()
。
-
RetrieveUpdateDestroyAPIView
-
DestroyModelMixin