Django restframework的Swagger文档失败

jecbmhm3  于 8个月前  发布在  Go
关注(0)|答案(1)|浏览(94)

我需要为我的django restframework项目生成swagger文档,这是我得到的错误:raise SwaggerGenerationError( drf_yasg.errors.SwaggerGenerationError: Schema for <class 'api.serializers.UserSerializer'> would override distinct serializer <class 'djoser.serializers.UserSerializer'> because they implicitly share the same ref_name; explicitly set the ref_name attribute on both serializers' Meta classes
下面是我的代码在serializers.py文件在我的API应用程序:

# Djoser authentication imports
from djoser.serializers import UserCreateSerializer
from djoser.serializers import UserSerializer as DjoserUserSerializer

# Djoser user serializer
class MyUserCreateSerializer(UserCreateSerializer):
    class Meta(UserCreateSerializer.Meta):
        fields = ['id', 'username', 'password', 'email', "first_name", "last_name"]

# Changed the serializer name to CustomUserSerializer
class CustomUserSerializer(serializers.ModelSerializer):
    class Meta(object):
        model = User 
        fields = ['id', 'username', 'password', 'email']
        ref_name = 'ApiUser'

# Using a different name for custom Djoser user serializer
class CustomDjoserUserSerializer(DjoserUserSerializer):
    class Meta(DjoserUserSerializer.Meta):
        ref_name = 'CustomDjoserUser'
nvbavucw

nvbavucw1#

你应该给你的视图添加一个swagger装饰器,yjn序列化器。

@swagger_auto_schema(
        tags=["YourModel tag"],
        operation_id="Write here smth",
        operation_description="GET request",
    )

def get_queryset(self):
        return YourModel.objects.filter(store__user_id=self.request.user.pk).order_by("-id")

在您的urls.py中:

schema_view = get_schema_view(
    openapi.Info(
        title="POPSO Backend API", default_version="v1", description="API endpoints described here", terms_of_service=""
    ),
    public=True,
    permission_classes=[permissions.AllowAny],
)

urlpatterns = [
    re_path(
        r"^api-docs/swagger(?P<format>\.json|\.yaml)$", schema_view.without_ui(cache_timeout=0), name="schema-json"
    ),
    re_path(r"^api-docs/swagger$", schema_view.with_ui("swagger", cache_timeout=0), name="schema-swagger-ui"),
    re_path(r"^api-docs/redoc$", schema_view.with_ui("redoc", cache_timeout=0), name="schema-redoc")```

相关问题