如何在前端创建Todo时从用户下拉框中移除Super Admin?
移除表单下拉框中的Super Admin用户
后端过滤推荐方案(更安全)
直接从数据源层面排除超级管理员,避免前端篡改提交非法数据:
- 若使用Django
ModelForm,重写表单初始化方法过滤用户:
from django import forms from django.contrib.auth.models import User class TodoForm(forms.ModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) # 筛选出非超级管理员用户 self.fields['assigned_to'].queryset = User.objects.filter(is_superuser=False)
- 若通过视图传递用户列表到前端,在视图层过滤:
def create_todo(request): # 获取排除超级管理员的用户集合 users = User.objects.filter(is_superuser=False) return render(request, 'create_todo.html', {'users': users})
前端过滤方案(仅用于展示,存在安全风险)
如果只能在前端处理,渲染下拉选项时跳过Super Admin:
- Vue.js示例:
<select v-model="selectedUser"> <option v-for="user in users" :key="user.id" v-if="!user.is_superuser" :value="user.id" > {{ user.username }} </option> </select>
- 原生JavaScript示例:
// 假设下拉框ID为userSelect const userSelect = document.getElementById('userSelect'); Array.from(userSelect.options).forEach(option => { // 根据用户名判断并移除Super Admin选项 if (option.textContent.trim() === 'Super Admin') { userSelect.removeChild(option); } });
内容的提问来源于stack exchange,提问作者rohit kumar
相关产品推荐
相关产品推荐

