【发布时间】:2021-12-12 03:33:53
【问题描述】:
我正在尝试使序列化程序类动态化,但它不起作用。我有一个默认的序列化程序类,作为不同操作的动态序列化程序类。这是我的模型视图集。
我的看法:
class ClassView(viewsets.ModelViewSet):
queryset = Class.objects.all()
serializer_class = ClassSerializer
serializer_action_classes = {
'put': AddStudentstoClassSerializer,
}
def get_serializer_class(self):
"""
returns a serializer class based on the http method
"""
try:
return self.serializer_action_classes[self.action]
except (KeyError, AttributeError):
print("iam ClassSerializer")
return super(ClassView, self).get_serializer_class()
我在上面同一个模型视图集中的函数
@action(detail=True, methods=['put'])
def add_remove_students(self, request, *args, **kwargs):
................
我的网址如下:
urlpatterns = [
path("class/<int:pk>/<slug:slug>/",views.ClassView.as_view({"put": "add_remove_students"}),
),
]
在上面的代码 sn-p 中,我尝试在 add_remove_students 函数中获取 AddStudentstoClassSerializer,但它不起作用。我们可以看到 print("iam ClassSerializer") 代码正在工作,但是我想要的是 AddStudentstoClassSerializer。
【问题讨论】:
标签: django api url serialization django-rest-framework