是否有可能从DRF中的ViewSet
获取所有动作名称?
我的意思不仅是标准的list
,retrieve
等,还有自定义的(由@action
装饰器定义)
我尝试使用action_map
,但它是空的
答案 0 :(得分:2)
我认为没有直接的方法来获取ViewSet类中指定的所有操作。但是,Routers通常以类似的方式生成URL。因此,我将在这里使用DRF Routers,
from rest_framework.routers import SimpleRouter
router = SimpleRouter()
routes = router.get_routes(YourViewsetClass)
action_list = []
for route in routes:
action_list += list(route.mapping.values())
distinct_action_list = set(action_list)
答案 1 :(得分:0)
我正在使用 rest_framework version 3.11.2
,您可以这样做:
actions = [action for action in YourViewsetClass.get_extra_actions()]
action_names = [action.__name__ for action in YourViewsetClass.get_extra_actions()]
action_url_names = [action.url_name for action in YourViewsetClass.get_extra_actions()]