【发布时间】:2015-08-30 03:43:56
【问题描述】:
当我在 django-rest0-framework 中创建一个基于 ModelSerializer 的序列化器时,我将不得不在 Meta 类中传递模型:
class ClientSerializer(ModelSerializer):
class Meta:
model = Client
我想创建一个通用序列化器,它基于 URL 动态地包含模型。
到目前为止,我的设置包括 urls.py 和视图集:
urls.py:
url(r'^api/v1/general/(?P<model>\w+)', kernel_api_views.GeneralViewSet.as_view({'get':'list'}))
和views.py:
class GeneralViewSet(viewsets.ModelViewSet):
def get_queryset(self):
# Dynamically get the model class from myapp.models
queryset = getattr(myapp.models, model).objects.all()
return queryset
def get_serializer_class(self):
return getattr(myapp.serializers, self.kwargs['model']+'Serializer')
注意事项:http://127.0.0.1:8000/api/v1/general/Client 将 Client.objects.all() 作为查询集,将 ClientSerializer 类作为序列化程序
问题:我如何才能调用“GeneralSerializer”并在其中动态分配模型?
【问题讨论】:
标签: python django python-3.x django-rest-framework