0

这一直让我发疯,我无法让它工作。这是一个简单的场景:我想向用户展示我从数据库中提取的动态生成的用户列表,以便用户可以从 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 中呈现???我在这里错过了什么真正简单的事情?还是我以完全错误的方式解决这个问题?

4

1 回答 1

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

于 2012-12-11T04:17:24.940 回答