5

テンプレートのフォームのフィールドの値を表示するのに問題があります。値はテンプレートで使用できるはずですが、使用できないようです。

状況は次のとおりです。

models.py:

class Member(models.Model):
    ...
    name = models.CharField(max_length=10, unique=True)
    description = models.CharField(max_length=50, blank=True)

class Pool(models.Model):
    ...
    members = models.ManyToManyField(Member, through='MemberPoolDates')

class MemberPoolDates(models.Model):
    member = models.ForeignKey(Member)
    pool = models.ForeignKey(Pool)
    date = models.DateField(null=True, blank=True)

ビュー.py:

    pool = Pool.objects.get(id=pool_id)
    MemberFormSet = modelformset_factory(MemberPoolDates, form=MemberForm)
    memberformset = MemberFormSet(queryset=MemberPoolDates.objects.filter(
                                                                      pool=pool))

テンプレート:

<form action="" method="post">
{% csrf_token %}
<table>
{{ poolform }}
</table>
<h2>Pool entries:</h2>
{{ memberformset.management_form }}
{% for memberform in memberformset %}
    {{ memberform.id }}
    {{ memberform.member }} 
    {{ memberform.member.name }}
    {{ memberform.member.description }}
{% endfor %}
<input type="submit" name="save" value="Save pool"/>
</form>

テンプレート{{ memberform.member }}にはドロップダウンが正しく表示されますが、{{ memberform.member.description }}何も{{ memberform.member.name }}表示されず、member.nameの値の代わりに「member」がテキストとして表示されます(私が望んでいたもの)。

テンプレートのメンバーのフィールドにアクセスするにはどうすればよいですか? 具体的には、memberform を介してテンプレートに member.name と member.description の値を表示するにはどうすればよいですか?

4

1 に答える 1

7

テンプレートでこれを試すことができます(フォームのモデルインスタンスにアクセスします):

{{ memberformset.management_form }}
{% for form in memberformset %}
    {{ form.instance.member.name }}
    {{ form.instance.member.description }}
{% endfor %}

これにより、目的のフィールドがプレーン テキストとして出力されます。

于 2012-08-21T10:26:00.333 に答える