[英]Problem reusing serializers with django and drf-yasg
我正在使用 django、django drf 和 drf-yasg 來生成編寫我的 BE 並生成文檔。
我有一個名為 User 的模型和一個用於用戶的序列化程序:
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = users_models.User
fields = (users_models.User.first_name.field_name,
users_models.User.last_name.field_name,)
我有一些方法 Foo 可以獲得兩個用戶。 這是請求的序列化程序的樣子:
class FooRequestSerializer(serializers.ModelSerializer):
first_user = UserSerializer(help_text="first user")
second_user = UserSerializer(help_text="second user")
當我為此生成一個swagger json方案時,我查看了json和redoc,我看到了:
我注意到如果我確保 ref 名稱是不同的,那么 redoc 讀起來很好,因為 first_user 和 second_user 得到了他們自己的描述。 問題來了,因為我也希望以后能夠使用 swagger codegen 來創建 Java 存根,所以解決方案和據我所知,每個不同的 ref 名稱都有一個不同的類。 理想情況下,我會看到對 foo 的調用類似於
Foo(User first_user, User second_user)
這讓我想到了一個問題:
如果 first_user 和 second_user 具有不同的 ref 名稱,那么 redoc 可以工作,但我會生成兩個不同的類,例如
Foo(FirstUser first_user, SecondUser second_user)
我需要做什么才能按預期工作重文檔和生成的類?
根據此處的drf-yasg 文檔,您可以在序列化程序的 Meta 類中指定 ref_name 。 因此,這樣的事情應該工作(雖然不是很干凈的解決方案):
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = users_models.User
fields = (users_models.User.first_name.field_name,
users_models.User.last_name.field_name,)
class FirstUserSerializer(UserSerializer):
class Meta:
ref_name = "User 1"
class SecondUserSerializer(UserSerializer):
class Meta:
ref_name = "User 2"
class FooRequestSerializer(serializers.ModelSerializer):
first_user = FirstUserSerializer(help_text="first user")
second_user = SecondUserSerializer(help_text="second user")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.