когда я создаю сериализатор в django-rest0-framework на основе ModelSerializer, мне нужно будет передать модель в мета-класс:
class ClientSerializer(ModelSerializer):
class Meta:
model = Client
Я хочу создать общий сериализатор, который на основе URL-адреса динамически включает модель.
Таким образом, мои настройки включают в себя urls.py и viewset:
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' и динамически назначить модель в нем?