3

表に学生のリストを表示し、各名前の横に入力フィールドを表示して、ユーザーがその学生に「タグ」を付けることができる Web アプリケーションを作成しています。これをすべてテーブル内に統合する方法を理解するのに苦労しています。

ここに私がforms.pyで宣言したフォームがあります:

class TagsForm(forms.Form):
    def __init__(self, *args, **kwargs):
        applicants = kwargs.pop('applicants')
        super(TagsForm,self).__init__(*args, **kwargs)
        for i, applicant in enumerate(applicants):
            self.fields['tag_%s' % i] = forms.CharField(label=applicant)

    def tagInput(self):
        for tags in self.cleaned_data.items():
            if tags.startswith('tag_'):
                yield (tags)

次に、view.py でフォームを作成し、コンテキストに渡します。

tags_form = TagsForm(request.POST or None, applicants=applicantQuery)
if tags_form.is_valid():
    for(tags) in tags_form.tagInput():
        ...
...
context = Context({'tagsForm':tags_form, ... }
return render_to_response('review/assignment.html', context)

ご覧のとおり、表に表示する各応募者の文字入力「タグ」フィールドを作成しようとしています。それから私のテンプレートにはこれがあります:

<form name="applicants" method="POST">
<table class="sortable" id="appTable">
<tr> 
     <th>EID</th>
     <th>Name</th>
     <th>Reviewer Tags</th>
</tr>

{% for applicant in applicants %}
<tr>
    <td> <a href="../../{{ applicant.app_id }}/overview" target="_blank">{{ applicant.app_eid }}</a></td>   

    <td> {{ applicant.app_displayName }} </td>
    <td> {{ tagsForm.tags_???}} </td>
</tr>
{% endfor %}

</table><br />
{{ tags_form.non_field_errors }}
<input type="submit" value="Submit Tags"/>
</form>

私はすでに応募者を繰り返し処理しているため、tagsForm タグ フィールドを繰り返し処理する方法がわかりません。私はDjango/HTMLにかなり慣れていないので、解決策は非常に簡単かもしれませんが、検索して、このようなことをしようとしている人を見つけることができませんでした. 助けてくれてありがとう。

4

1 に答える 1