【问题标题】:django reversing admin urls with underscoresdjango 使用下划线反转管理 url
【发布时间】:2016-03-31 15:27:35
【问题描述】:

要反转 Django Admin 的模型 url,您需要编写 admin:appname_modelname_change 。但是如果型号名称有下划线呢?

我在一个名为pubscout 的应用程序中有一个名为AdNetwork 的模型,我正在尝试反转它的网址。

admin:pubscout_adnetwork_change 不起作用

admin:pubscout_ad_network_change 也不起作用

如何解决这个问题?

【问题讨论】:

  • 我不确定如何解决您的问题,但您不应该在模型名称中使用下划线。模型是 python 类,它们应该使用 CapWords 约定,例如AdNetwork。 PEP 8 文档:python.org/dev/peps/pep-0008/#class-names
  • 是的,我的模型是AdNetwork,没有下划线。它的网址应该如何?上述版本不起作用。上面的下划线版本只是一个建议。

标签: django django-models django-admin


【解决方案1】:

请您向我们展示您的代码。

reverse('admin:%s_%s_change' % (app_label, model_name), args=(object_id,))

这样的事情应该可以工作:

reverse('admin:pubscout_adnetwork_change', args=(object_id,))

...其中object_idAdNetwork pk。

请让您注册AdNetwork 模型并将 AdminSite 实例挂钩到您的 URLconf。

文档:https://docs.djangoproject.com/en/1.9/ref/contrib/admin/#reversing-admin-urls

【讨论】:

  • 是的,我的论点错了。我在做 reverse_lazy('admin:pubscout_adnetwork_change', kwargs={'pk': obj.ad_network.pk}) 。您使用args 而不是kwargs 的方式非常有效。谢谢!
猜你喜欢
  • 2017-11-01
  • 1970-01-01
  • 2019-11-04
  • 2013-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-06
  • 2022-11-26
相关资源
最近更新 更多