模板中表单外键的访问字段

Joh*_*ers 4 django

我无法在模板的表单中显示字段的值。该值应该可用于模板,但它似乎没有。

这是情况:

模型.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)
Run Code Online (Sandbox Code Playgroud)

视图.py:

    pool = Pool.objects.get(id=pool_id)
    MemberFormSet = modelformset_factory(MemberPoolDates, form=MemberForm)
    memberformset = MemberFormSet(queryset=MemberPoolDates.objects.filter(
                                                                      pool=pool))
Run Code Online (Sandbox Code Playgroud)

模板:

<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>
Run Code Online (Sandbox Code Playgroud)

在模板中{{ memberform.member }}正确显示一个下拉列表,但不{{ memberform.member.description }}显示任何内容并{{ memberform.member.name }}显示“成员”而不是 member.name 的值作为文本(我想要的)。

如何访问模板中的成员字段?更具体地说,如何通过 memberform 在我的模板中显示 member.name 和 member.description 的值?

Jin*_*ngo 6

您可以在模板中尝试此操作(访问表单的模型实例):

{{ memberformset.management_form }}
{% for form in memberformset %}
    {{ form.instance.member.name }}
    {{ form.instance.member.description }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

这应该将所需的字段输出为纯文本。

  • 据我所知,这没有记录在案,但来源可能与您同在;) (2认同)