我目前正在为我的Django项目开发一个多角色用户登录模块。我目前有两个角色如何根据角色选择更改显示在管理页面上的内联?
#models.py in users
class User(AbstractUser):
role_choice = (
('Reader', u'Reader'),
('Author', u'Author'),
('Editor', u'Editor'),
('Admin', u'Admin')
)
user_role = models.CharField(choices=role_choice,
max_length=150,
default='Admin',
verbose_name='Role')
#admin.py in users
class ReaderInline(admin.TabularInline):
model = Reader
extra = 2
class AuthorInline(admin.TabularInline):
model = Author
extra = 2
class UserAdmin(admin.ModelAdmin):
form = UserForm
inlines = [ReaderInline, AuthorInline]
您可以使用ModelAdmin.get_inline_instances
自定义内联对象的创建https://docs.djangoproject.com/en/2.2/ref/contrib/admin/#django.contrib.admin.ModelAdmin.get_inline_instances
class UserAdmin:
def get_inline_instances(self, request, obj=None):
if obj.role == 'Reader':
return ReaderInline(self.model, self.admin_site)
else:
... You got it