python - 使用 ModelChoiceField 在 Django Select Widget 中禁用选项
问题描述
我试图在表单的“选择”小部件中将非活动用户显示为“已禁用”。
我有一个 django 用户模型的工人。
模型.py
class Task(models.Model):
worker = models.ForeignKey(settings.AUTH_USER_MODEL, models.DO_NOTHING, blank=True, null=True,related_name='worker')
它由一个 ModelForm 表示,使用一个子类来显示用户的全名。
表格.py
class UserModelChoiceField(forms.ModelChoiceField):
def label_from_instance(self, obj):
return obj.get_full_name()
class TaskForm(forms.ModelForm):
worker = UserModelChoiceField(queryset=User.objects.filter(is_active=1).order_by('first_name'),widget=forms.Select(attrs={'class':'form-control'}),required=False)
class Meta:
model = Task
fields = ['worker']
目前,过滤器 is_active=1 意味着非活动用户根本不会显示在列表中,并且在他们已经被选中的位置显示为“---”。
我的理想是它们出现但呈灰色显示,因此它们被呈现但无法选择。
从审查https://djangosnippets.org/snippets/2453/
我在 choiceField的“禁用”选项中找到的 - Django
我能够得出结论,选择的子类应该可以工作。但是我不知道如何在查询集和小部件之间进行获取以达到预期的结果。阅读表明小部件上的渲染方法可能是这种方式,但我找不到如何传递信息或调用 create_option 的确切位置的示例。
解决方案
推荐阅读
- r - 使用 dplyr 包中的 select + unlist 和使用美元符号有什么区别?
- lua - 动态类型语言的编译器如何处理非局部变量的变化?
- javascript - jQuery FadeIn() 等不起作用,浏览器认为它们根本不起作用
- python - 如果发生异常,删除 JSON 文件
- go - 如何锁定地图并修复数据竞争
- php - 在文件名旁边添加图标
- javascript - React-Native 动态改变 fetch url
- python - 如何将模型导入我的控制台,以便我可以从我的数据库中查找它的实例?
- security - 密码中方法 update() 和 dofinal() 之间的区别
- c++ - Stack的链表实现