2010-12-15 11 views
0

ここではDjangoの初心者の方が新しいので、私はそれを取得していないか、これはバグですか分かりません。のは、私は、フォームクラスがあるとしましょう:対応するテンプレートでは、その後Djangoテンプレートが配列内にある場合、Djangoテンプレートはフォームフィールドにアクセスできません

class SurveyTwo(forms.Form): 
    food = [forms.BooleanField(required=False, initial=False, label="Seafood")] 

を、私はこれを行うと、私は私のページに取得

{{ form.food.0 }} 

を入力して、これにアクセスしようとしています:

<django.forms.fields.BooleanField object at 0x1c5b990> 

私が探していた「シーフード」のチェックボックスではありません。 {{form.food.0.label}}でラベルにアクセスできますが、チェックボックスはその文字列として表示されます。私はこれをすることができるかしないか?

私がしようとしているのは、各フォーム変数/フィールドを定義するのではなく、フォームテンプレートにチェックボックスの配列を渡すことです。私は多数のチェックボックスを持ち、それらを定義して手動ですべてレイアウトするのではなく、(2D配列の)特定の順序でレイアウトすることができるため、これを実行したいと思います。私が上記を行うことができない場合、誰かが簡単な解決策を知っていますか?ありがとう。

マーク

+0

次のようになりますdynamicly生成されたフィールドを持っている場合、それはあなたが{言わないDjangoのものです{forms.field [0]}} – verisimilidude

+0

テンプレートで(少なくとも私の理解では)、.0、.1、.2の配列にアクセスする必要があります。私が言ったように、{{form.food.0.label}}は "Seafood"を出力します。 – marko

答えて

1

あなたは、単純なテンプレートタグ登録することができます。あなただけの使用テンプレートに続いて

from django import template 
register = template.Library() 

@register.simple_tag 
def bound_field(form, name): 
    """ returns bound field """ 
    return form.__getitem__(name) 

を:

{% bound_field form <field_name> %} 

フィールドの名前です。 あなたはあなたがすべてのフィールドを生成し、この場合にfields.keysを経由してそれらにアクセスすることができます知らない名前が

{% for name in form.fields.keys %} 
    {% bound_field form name %} 
{% endfor %} 
関連する問題