python - Django 在管理中的内联之间切换

标签 python django

我目前正在为我的 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

关于python - Django 在管理中的内联之间切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59141692/

相关文章:

python - wxPython - DatePickerCtrl 似乎忽略了 SetValue()

python - Apache 说打开文件读取 : Permission Denied 时出错

python - Heroku 和 Django : No default language could be detected for this app

python - 在 GeoDjango 中导入空间数据时出错 - mpoly 字段的 KeyError

python - 您无法添加没有默认值的 null=False 列

python - 在 python 中为文件名 (amazon S3) 添加动态内容配置

python - 使用 Pandas 数据框中的值作为另一个数据框中的列名

python - 通过API R1Soft CDP恢复MySQL数据库

python - 在 64 位 Windows 上让 cython 与 Enthought Canopy 配合使用的官方方法是什么?

mysql - 在 django ORM 中按 id 数组排序