这让我疯了,我无法让它发挥作用。这是一个简单的场景:我想向用户显示我从数据库中提取的动态生成的用户列表,以便用户可以从ChoiceField中选择一个用户(呈现为HTML选择)并单击“获取数据”按钮。
我不想在表单中创建用户列表,因为新用户会一直出现。我想在我的视图中查询用户并将该用户列表绑定到表单,以便始终呈现最新的用户列表。所以这是我的表格:
class ViewUsersForm(forms.Form):
user_choice = forms.ChoiceField()
这是我的观点:
from django.contrib.auth.models import User
from mystuff.forms import ViewUsersForm
def site_admin_view_user_groups_page(request):
if request.method == 'POST':
<...handling POST for this question is unimportant...>
else:
users = User.objects.all()
data = {'user_choice': users}
form = ViewUsersForm(data) # binding the list of users here
variables = RequestContext(request, {'form': form,})
return render_to_response('school/admin/view_user_groups_page.html', variables)
最后,这是我要渲染的模板:
<form action="/site/viewusers/" method="post">{% csrf_token %}
{{ form.user_choice }}
<button type="submit" name="getDataButton">Get Data</button>
</form>
因此,当模板呈现绑定表单(form = ViewUsersForm(data))时,ChoiceField将显示为空。如何获取ChoiceField中的数据以在我的HTML中呈现?我在这里错过了什么非常简单的事情?或者我是以完全错误的方式解决这个问题?
答案 0 :(得分:1)
ChoiceField采用'可迭代(例如,列表或元组)的2元组作为该字段的选择。因此,您需要将您的选择设置为((value1,'name1'),(value2,'name2'),()) https://docs.djangoproject.com/en/dev/ref/forms/fields/#django.forms.ChoiceField
您还可以使用ModelChoiceField按原样使用您的查询集 https://docs.djangoproject.com/en/dev/ref/forms/fields/#django.forms.ModelChoiceField