如何在Django admin下拉选择项为空时禁用页面新增权限
实现方案
你只需要在现有的has_add_permission权限判断逻辑中,新增template_data非空的校验即可,具体修改如下:
- 首先在Admin类所在的文件中导入你定义的
template_data变量(如果和Admin类同文件可跳过导入步骤) - 修改
has_add_permission方法,补充空值判断逻辑:
# 按需导入template_data,示例为从同应用models.py导入 from .models import template_data def has_add_permission(self, request, obj=None): is_redis = RedisCache.is_redis_available() # 同时校验Redis可用性和template_data是否为空 if not is_redis or not template_data: return False return True
注意事项
如果你的template_data是服务运行过程中由其他脚本动态更新的,不要直接导入静态的template_data变量(Django启动时会缓存导入的变量值,运行时更新不会同步),需要改为每次判断时拉取最新的template_data源数据校验是否为空:
比如template_data是从Redis读取生成的,就直接在校验步骤读取Redis的对应配置判断是否为空即可。
内容的提问来源于stack exchange,提问作者ninjacode
相关产品推荐
相关产品推荐

