django - 根据数据库中的值在Django Admin中隐藏模型

标签 django django-admin

我想根据值在django管理界面中隐藏模型
在数据库中。

我的第一个解决方案是将其添加到应用程序的ready()处理程序中:

    from foo.models import MyModel
    if MyModel.objects.filter(...).exists():
        from foo.models import ModelToHide
        admin.site.unregister(ModelToHide)

以上解决方案有效...除了:

这在CI中失败。

如果CI从头开始构建新系统,则MyModel的数据库表尚不存在:

任何提示如何解决这个问题?

最佳答案

我认为解决方案在于this bit of the admin logic

因此,您将为模型提供自定义的ModelAdmin,然后重写get_model_permsadmin.py中执行以下操作:

class MyModelAdmin(admin.ModelAdmin):

    def get_model_perms(self, request):
        # Do your check here - if you want to hide the model from the admin then...
         return {
             'add': False,
             'change': False,
             'delete': False,
         }

admin.site.register(MyModel, MyModelAdmin)

Django检查这些烫发是否为True-如果不是,则它将隐藏该模型。

关于django - 根据数据库中的值在Django Admin中隐藏模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49423685/

相关文章:

python - 在管理页面查看相册中的照片

django - 服务器滞后 - Django + mongodb + cronjob

Django 管理员搜索字段复选框

Django 自动完成灯、taggit 和管理界面

Python/Django AttributeError "Object ' 玩家没有属性 'fields'

database - Django:如何为异构数据类型的树建模?

python - 在 pandas 中访问存储在 s3 上的 HDF 文件

python - Django 自定义用户模型... user.model(...) 从哪里来?

django - 使用 TabularInline 在 Django Admin 中保存的优先级

python - Django 无法通过管理员下载文件