簡體   English   中英

有沒有辦法在 drf-spectacular 中更改序列化程序的自動生成的 shema 名稱

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM