gue*_*tli 10 django django-admin
我想根据数据库中的值在django管理界面中隐藏模型.
我的第一个解决方案是将其添加到ready()应用程序的处理程序:
from foo.models import MyModel
if MyModel.objects.filter(...).exists():
from foo.models import ModelToHide
admin.site.unregister(ModelToHide)
Run Code Online (Sandbox Code Playgroud)
以上解决方案有效...除外:
这在CI中失败了.
如果CI从头开始构建新系统,则数据库表MyModel尚不存在:
任何提示如何解决这个问题?
sol*_*oke 12
我认为解决方案在于管理逻辑的这一点.
因此,您将为ModelAdmin您的模型提供自定义,然后覆盖get_model_perms以执行以下操作admin.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)
Run Code Online (Sandbox Code Playgroud)
Django检查是否有任何这些烫发True- 如果没有,那么它将隐藏模型的视图.
| 归档时间: |
|
| 查看次数: |
143 次 |
| 最近记录: |