![](/img/trans.png)
[英]Is there an alternative to using a serializer for drf-spectacular's extend_schema request param?
[英]Is there a way to change the autogenerated shema name of a serializer in drf-spectacular
我有許多名為“InputSerializer”和“OutputSerializer”的序列化程序,它們在 drf-spectacular 中轉換為“輸入”和“輸出”模式名稱。 這最終將 api 端點引用到相同的模式。 有沒有辦法在不更改 class 名稱的情況下覆蓋這些序列化程序的自動生成模式名稱?
我遇到了很多,但從未嘗試過解決它。 查看我發現的文檔extended_schema_serializer
,它可能會滿足您的需求。 這是完整的 api和相關點:
component_name
– 覆蓋默認 class 名稱提取@extended_schema_serializer(component_name="SomeNiceReallyLongId")
class Input(Serializer):
# pass
它有點長而且丑陋,但這可以由裝飾器上的裝飾器修復:D
可以理解,但是一個唯一的名字必須來自某個地方,並且除了類名本身之外,壯觀不知道什么是對你來說好的名字。 Andrew 提供了本機解決方案,但也有語法糖(與 drf-yasg 的兼容性功能)。
class InputSerializer(serializer.Serializer):
class Meta:
ref_name = 'SomeNiceReallyLongId'
https://drf-spectacular.readthedocs.io/en/latest/drf_yasg.html?highlight=ref_name#compatibility
否則,我建議AutoSchema
並覆蓋_get_serializer_name
並使其為您工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.