我有一個使用Django REST框架的ViewSet,它具有標準路徑和自定義路徑。每個路由的序列化器是不同的。Django REST框架在HTML視圖上顯示多個表單
例子:
class UserViewSet(ViewSet):
model = User
serializer_class = UserSerializer
@decorators.detail_route(methods=['put'])
def change_password(self, request, pk, *args, **kwargs):
serializer = UserChangePasswordSerializer(data=request.data)
...
@decorators.detail_route(methods=['put'])
def update_prefs(self, request, *args, **kwargs):
serializer = UserPreferencesSerializer(data=request.data)
...
我所擁有的一切工作,這樣我可以執行標準的GET,POST,PUT,刪除用戶對象和兩個額外的工作路線上的行動。但是,我無法弄清楚如何在使用BrowsableAPIRenderer
時爲自定義路由顯示HTML表單。例如,開發人員能夠看到表格顯示上述放置方法預期的字段,這將非常方便。
我試着爲兩條路線添加get方法,但這對第一條路線來說是不合理的。無論如何,當我轉到路由的URL時,我看不到正確的序列化程序,我看到在serializer_class
中指定的序列化程序。
關於唯一我沒有嘗試過的是覆蓋get_serializer_class()
,因爲這涉及將每個路由器的每個序列化程序的知識放在一個地方,而不是能夠在路徑方法本身內指定序列化程序...是這個我應該試圖獲得理想的效果嗎?