我想根据值隐藏django管理界面中的模型 在数据库中。
我的第一个解决方案是将此添加到应用的ready()
处理程序:
from foo.models import MyModel
if MyModel.objects.filter(...).exists():
from foo.models import ModelToHide
admin.site.unregister(ModelToHide)
以上解决方案有效......除了:
这在CI中失败了。
如果CI
从头开始构建新系统,则MyModel
的数据库表尚不存在:
任何提示如何解决这个问题?
答案 0 :(得分:12)
我认为解决方案在于this bit of the admin logic。
因此,您需要为模型提供自定义252
,然后在ModelAdmin
中覆盖get_model_perms
以执行此类操作:
admin.py
Django检查这些权限是否为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)
- 如果没有,则会隐藏模型。