Django在管理员的内联之间切换

问题描述 投票:1回答:1

我目前正在为我的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]
python django
1个回答
0
投票

您可以使用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
© www.soinside.com 2019 - 2024. All rights reserved.