如何在 Django 中为外部应用程序模型设置 verbose_name?
How to set verbose_name for external app model in Django?
我正在尝试为来自 django_social 的模型 SocialAuthUser
设置 verbose_name
。
我尝试使用代理模型,将其 Meta.verbose_name
设置为所需的值,但没有成功(可能我做错了)。如果可以的话,我可以提供更多细节。
最好避免在可编辑模式下从 pip 安装模块只是为了替换管理站点中的 verbose_name
。
也许我可以用其他方式替换管理站点中的模型名称?
我考虑过将自定义 link 添加到管理站点,但还没有研究这种方法,因为它感觉很老套。
你几乎答对了。要使代理模型的更改生效,您需要先从管理站点注销模型,然后再注册代理模型。
以下示例适用于 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),
]
我正在尝试为来自 django_social 的模型 SocialAuthUser
设置 verbose_name
。
我尝试使用代理模型,将其 Meta.verbose_name
设置为所需的值,但没有成功(可能我做错了)。如果可以的话,我可以提供更多细节。
最好避免在可编辑模式下从 pip 安装模块只是为了替换管理站点中的 verbose_name
。
也许我可以用其他方式替换管理站点中的模型名称? 我考虑过将自定义 link 添加到管理站点,但还没有研究这种方法,因为它感觉很老套。
你几乎答对了。要使代理模型的更改生效,您需要先从管理站点注销模型,然后再注册代理模型。
以下示例适用于 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),
]