Sri*_*van 6 python django django-models django-forms
我的表单类中有一个ChoiceField,可能是一个用户列表.如何使用我的用户模型中的用户列表预填充此列表?
我现在拥有的是:
class MatchForm(forms.Form):
choices = []
user1_auto = forms.CharField()
user1 = forms.ChoiceField(choices=choices)
user2_auto = forms.CharField()
user2 = forms.ChoiceField(choices=choices)
def __init__(self):
user_choices = User.objects.all()
for choice in user_choices:
self.choices.append(
(choice.id, choice.get_full_name())
)
Run Code Online (Sandbox Code Playgroud)
这似乎不起作用(否则我不会在这里).思考?
为了澄清,当我尝试在模板中渲染此表单时,它只是输出任何内容,除非我删除ChoiceFields和__init__()方法.
另外,如果我只想在我的字段中列出用户的全名,该怎么办?也就是说,我想控制每个用户对象的显示输出(所以ModelChoiceField不是一个选项).
Dom*_*ger 29
看起来你可能正在寻找ModelChoiceField.
user2 = forms.ModelChoiceField(queryset=User.objects.all())
Run Code Online (Sandbox Code Playgroud)
但是,这不会显示全名,它只会调用__unicode__每个对象来获取显示的值.
你不只是想显示__unicode__,我做这样的事情:
class MatchForm(forms.Form):
user1 = forms.ChoiceField(choices = [])
def __init__(self, *args, **kwargs):
super(MatchForm, self).__init__(*args, **kwargs)
self.fields['user1'].choices = [(x.pk, x.get_full_name()) for x in User.objects.all()]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12813 次 |
| 最近记录: |