Django新手求教:如何在表单中从特定组选择titulaire用户?
解决方法
你的问题出在代码里删除了titulaire字段,导致表单无法渲染这个选择框。正确的做法是保留字段,然后修改它的查询集,只返回'Profs'组的用户。
修改后的表单代码如下:
from django import forms from .models import Classe from django.contrib.auth.models import User class ModifyClasse(forms.ModelForm): class Meta: model = Classe fields = ['title', 'year', 'titulaire', 'cotitulaire'] def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) # 过滤出属于'Profs'组的用户,作为titulaire字段的可选选项 self.fields['titulaire'].queryset = User.objects.filter(groups__name='Profs')
关键说明:
- 确保
Meta类的fields列表包含titulaire,这样表单才会生成该字段的输入控件。 - 在
__init__方法中,先调用父类的初始化逻辑,再修改titulaire字段的queryset属性,限制可选范围。 - 如果需要排除禁用的用户,可以在过滤条件里加上
is_active=True:self.fields['titulaire'].queryset = User.objects.filter(groups__name='Profs', is_active=True)
内容的提问来源于stack exchange,提问作者bonarn
相关产品推荐
相关产品推荐

