Closed
Description
Seems Viewset
s get_extra_action_url_map
method does not recognize namespaces. I'm using different apps via Django URL namespaces (":") but the DRF action pull down menu will not be provides. My quick fix looks like:
def get_extra_action_url_map(self):
action_urls = OrderedDict()
# exit early if `detail` has not been provided
if self.detail is None:
return action_urls
# filter for the relevant extra actions
actions = [
action for action in self.get_extra_actions()
if action.detail == self.detail
]
for action in actions:
try:
url_name = '%s-%s' % (self.basename, action.url_name)
namespace = self.request.resolver_match.namespace
if namespace:
url_name = '%s:%s' % (namespace, url_name)
url = reverse(url_name, self.args, self.kwargs,
request=self.request)
view = self.__class__(**action.kwargs)
action_urls[view.get_view_name()] = url
except NoReverseMatch as exc:
pass # URL requires additional arguments, ignore
return action_urls
which basically add these two lines:
namespace = self.request.resolver_match.namespace
if namespace:
url_name = '%s:%s' % (namespace, url_name)
The fix works fine for me since years, but it seems that nobody else has been stumbled about it before.
Regards
Frank
Metadata
Metadata
Assignees
Labels
No labels