0

Ubuntu 12.04でPython 2.7でDjango 1.4を使用しています。

進歩するにつれて、この質問を更新し続けます。

更新 2:

既存のモデルからの情報を使用して、フォームに 2 つの選択肢フィールドを生成しようとしています。

class AssignProject(forms.Form):

    def __init__(self, devs, *args, **kwargs):
        """
        ..  method:: __init__()

            Class constructor

            :param devs: Tuple with which developer
        """
        super(AssignProject, self).__init__(*args, **kwargs)
        self.dev = forms.ChoiceField(widget = forms.Select(), choices = devs, required = True)
        self.designer = forms.ChoiceField(widget = forms.Select(), choices = devs, required = True)

この時点で、まだテンプレートにアクセスできないようdevですdesigner ChoiceField

ビューは次のとおりです。

@login_required
def view_all_projects(request):
    """
    ..  function:: view_projects()

        Show the projects

        :param request: Django Request object
    """
    data = { 'user' : request.user }
    if (request.user.is_authenticated() and request.user.is_superuser):
        all_projects = Projects.objects.filter(active = True)
        dev_info = User.objects.filter(is_staff = True, is_superuser = False)

        dev_dict = {}
        for dev in dev_info:
            dev_dict[dev.id] = '{0} {1}'.format(dev.first_name, dev.last_name)

        devs = tuple(dev_dict.items())

        form = AssignProject(devs)
        data.update({ 'form' : form })
        data.update({ 'projects'  : all_projects })
        data.update(csrf(request))
        return render_to_response("view_all_projects.html", data)

    return render_to_response("index.html", data)

開発者/デザイナーが で適切に設定されていることを確認しましたdevs tuple

...そして からのテンプレートview_all_projects.html:

<form action="/assignProject/" method="post">{% csrf_token %}
    <table>
        <td>
            <input type="hidden" name="project_id" value={{ project.id }}>
            <tr>
                <td align="right"><label class="formlabel">Assign Developer:<br /></label></td><td>{{ form.dev }}</td>
            </tr>
            <tr>
                <td align="right"><label class="formlabel">Assign Designer:<br /></label></td><td>{{ form.designer }}</td>
            </tr>
                <tr>
                    <td align="right"><label class="formlabel">&nbsp;</label></td><td><input type="submit" value="Submit  &#9658;"></td>
                </tr>
        </td>    
    </table>
</form> 

エラーは表示されませんがChoiceField、テンプレートの の代わりに奇妙なオブジェクト参照が表示されます。

<django.forms.fields.ChoiceField object at 0x7ffdbc054190>
<django.forms.fields.ChoiceField object at 0x7ffdbc0542d0>

代わりにこれらが表示されます。私は私が近づいていることを知っています...私が間違っていることを完全に理解することはできません。

考え?

4

1 に答える 1

0

問題は完全に形式__init__でした。

次のようにフィールドを割り当てる必要があります。

class AssignProject(forms.Form):

    def __init__(self, devs, *args, **kwargs):
        """
        ..  method:: __init__()

            Class constructor

            :param devs: Tuple with developers
        """
        super(AssignProject, self).__init__(*args, **kwargs)
        self.fields['dev'] = forms.ChoiceField(widget = forms.Select(), choices = devs, required = True)
        self.fields['designer'] = forms.ChoiceField(widget = forms.Select(), choices = devs, required = True)

に注意してself.fields['dev']くださいself.dev。すべてを修正しました。

于 2012-10-21T23:43:42.617 に答える