これは私を夢中にさせており、私はそれを機能させることができません。これは単純なシナリオです。データベースから取得した動的に生成されたユーザーのリストをユーザーに提示して、ユーザーが ChoiceField (HTML 選択としてレンダリング) からユーザーの 1 人を選択し、[データの取得] をクリックできるようにします。ボタン。
新しいユーザーが常に来るため、フォームにユーザーのリストを作成したくありません。ビュー内のユーザーを照会し、そのユーザーのリストをフォームにバインドして、常に最新のユーザー リストを表示できるようにします。だからここに私のフォームがあります:
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 に表示するにはどうすればよいですか? ここで私が見逃している本当に単純なことは何ですか? それとも、私はこれを完全に間違った方法で行っていますか?