【问题标题】:How to set verbose_name for external app model in Django?如何在 Django 中为外部应用程序模型设置 verbose_name?
【发布时间】:2018-10-14 02:05:29
【问题描述】:

我正在尝试从django_social 为模型SocialAuthUser 设置verbose_name

我尝试使用代理模型,将其Meta.verbose_name 设置为所需的值,但没有成功(可能我做错了)。如果可以的话,我可以提供更多细节。

最好避免以可编辑模式从 pip 安装模块,只是为了替换管理站点中的 verbose_name

也许我可以用其他方式替换管理站点中的模型名称? 我想添加自定义链接到管理站点,但还没有研究这种方法,因为它感觉很hacky。

【问题讨论】:

  • 你想达到什么目的?更改我假设的外部模型的特定字段的列表/表单标签,对吧?
  • 我需要在此模型的主管理站点页面上显示更多人类可读(以另一种语言)的名称。因此,不是字段名称,而是模型名称。而且我并不关心这个模型的 python 类名,只要显示的名称是我需要的。
  • 检查我的答案。我以为您想更改一个更棘手的字段的verbose_name,因为您必须覆盖模型表单并使用自定义short_description 创建一个方法字段。

标签: python django python-social-auth


【解决方案1】:

你几乎猜对了。为了使您对代理模型的更改生效,您需要先从管理站点取消注册模型,然后再注册代理模型。

以下示例适用于social_django.Association 模型。

# admin.py
from django.contrib import admin
from social_django.admin import AssociationOption
from social_django.models import Association


class AssociationProxy(Association):
    class Meta:
        proxy = True
        verbose_name = 'custom model'
        app_label = 'social_django'


admin.site.unregister(Association)
admin.site.register(AssociationProxy, AssociationOption)

假设您使用的是默认管理站点

# urls.py
from django.contrib import admin
from django.urls import path

urlpatterns = [
    path('admin/', admin.site.urls),
]

【讨论】:

  • 谢谢。尽管我使用的是自定义管理站点,但您的解决方案确实对我有用。唯一的区别是我用我的自定义 AdminSite 实例(取消)注册了模型。
  • 对不起。我如何更改应用程序的详细名称。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-28
  • 1970-01-01
  • 2019-11-28
相关资源
最近更新 更多