无论出于何种原因,我有三个与身份验证相关的模型,但在Django Admin中,它们显示在两个不同的组中。例如:
AUTHORIZATION
-------------
Security Questions
Users
AUTHORIZATION AND AUTHENTICATION
--------------------------------
Groups
似乎他们应该在一个小组之下,我想将他们移到一个小组之下。
几年前我遇到过这个Q / A:
Adding a model in Django Admin to the User/Group models?
想知道Django 1.11中是否有更简单的方法,比如在模型中使用class Meta:
或admin.py
。浏览文档并找不到任何东西。
答案 0 :(得分:3)
我实际上必须结合Mohammad和NeErAj所建议的内容。
当我尝试将Groups
移动到包含自定义Authorization
模型的应用的User
部分时,它会创建组的重复项。 Django仍然希望插入默认的auth_group
,我无法弄清楚如何摆脱它。
# ./models.py
from django.contrib.auth.models import Group
class Group(Group):
pass
class Meta:
app_label = 'authentication'
# ./admin.py
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from .models import User, SecurityQuestions, Group
admin.site.register(User, UserAdmin)
admin.site.register(SecurityQuestions)
admin.site.register(Group)
AUTHORIZATION
-------------
Groups
Security Questions
Users
AUTHORIZATION AND AUTHENTICATION
--------------------------------
Groups
由于我使用的是自定义User
模型,因此我认为将它们移动到app_label = 'auth'
会更容易。这样我就不必使用默认的auth_group
。结束了以下操作:
# ./models.py
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
...
class Meta:
db_table = 'Users'
class SecurityQuestions(models.Model):
...
class Meta:
app_label = 'auth'
db_table = 'Security_Questions'
verbose_name = 'Security Question'
verbose_name_plural = 'Security Questions'
class ProxyUser(User):
pass
class Meta:
app_label = 'auth'
proxy = True
verbose_name = 'User'
verbose_name_plural = 'Users'
# ./admin.py
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from .models import User, SecurityQuestions, ProxyUser
admin.site.register(ProxyUser, UserAdmin)
admin.site.register(SecurityQuestions)
这看起来像是:
AUTHORIZATION AND AUTHENTICATION
--------------------------------
Groups
Security Questions
Users
答案 1 :(得分:1)
您可以在Meta类中使用app_label。
如果您想要app_label的价值,请告诉我。
答案 2 :(得分:0)
最简单的解决方案是使用django-modeladmin-reorder:它允许您在管理站点中重新排序和合并应用程序。
这是此特定示例所需的配置:
ADMIN_REORDER = [
{
'app': 'auth',
'models': [
'my_custom_auth_app.User',
'my_custom_auth_app.SecurityQuestions',
'auth.Group',
]
}
]
该应用程序在后台使用了一个中间件,该中间件在呈现管理模板时会更改app_list
上下文。