我有一個模型與現場tool_class
,其冗長的名字是class
和名稱不同:Django REST框架:如何使字段的詳細名稱與其field_name不同?
class Tool(models.Model):
tool_class = jsonfield.JSONField(verbose_name="class")
串行器和視圖集只是股票HyperlinkedModelSerializer
和ModelViewSet
。
所以,當我郵寄或用鑰匙class
將數據到服務器,它是認罰:
'{"class": "..."}
但在響應數據它被稱爲tool_class
再次:
{"tool_class": "..."}
如何使它總是被稱爲class
?
我不能使用名稱"class"
作爲字段名稱,因爲它是python中的保留字,但在API中它絕對必須被稱爲"class"
,因爲API符合某個開放標準,該標準指定該字。
很顯然,我不能說:
class = CharField(source="tool_class")
在我
ToolSerializer
,因爲它是一個SyntaxError: invalid syntax
。
簡化算法: 傢伙在另一個線程提出了一個很好的解決方案。您可以使用vars()
語法來規避此問題。舉例來說,我使用下面的代碼:
class Tool(Document):
vars()['class'] = mongoengine.fields.DictField(required=True)
串行器會自動創建相應的字段。我們不是偷偷摸摸嗎?
是的,我同意它應該是一個拉請求,修改序列化程序字段接受一個額外的參數。但是,現在需要進行非常多的測試來進行調試,我現在無法自己編寫它。謝謝! –