我正在使用Django,其余框架和灵活(使用drf_yasg
)开发API。我试图生成视图集和序列化器,但是在Swagger中未显示参数和模型。可以手动编码每个序列化器和视图集,但是我的目标是简化此过程。这是我这一代人的代码:
# Template class for serializing
class GenericSerializer(serializers.ModelSerializer):
class Meta:
fields = '__all__'
depth = 3
# Unified Generic API view for all models in shop.models
class GenericAPIView(viewsets.ModelViewSet):
permission_classes = (IsAuthenticated,)
lookup_fields = ['id']
def dispatch(self, request, *args, **kwargs):
for model_name, model in apps.get_app_config('api').models.items():
if request.path.split('/')[2] == model._meta.verbose_name_plural.title().lower():
self.model = model
self.queryset = self.model.objects.all()
serializer = GenericSerializer
serializer.Meta.model = self.model
self.serializer_class = serializer
return super().dispatch(request, *args, **kwargs)
这样,默认的ModelViewSet路线就会大张旗鼓地显示出来,但是每个模型的参数以及模型本身都丢失了。我确认已分配了模型,尽管有代码,但在控制台中仍显示警告,提示我应提供serializer_class
或重写方法(但我认为应该没问题,因为我是手动分配的。)
我需要添加一些细节吗?还是不可能吗?