0

嗨,大家好,

我有这个模型:

class Pais(models.Model):
    nome = models.CharField('Nome', max_length=50)


class Brinq(models.Model):
    descricao = models.CharField('Nome', max_length=50)

class Filhos(models.Model):
    nome = models.CharField('Nome', max_length=50)
    idade = models.IntegerField('Idade')
    pai = models.ForeignKey('Pais')
    brinq = models.ForeignKey('Brinq', related_name='Brinq')

这种观点:

def editPai(request, idpai=None):
    if idpai:
        pai = Pais.objects.get(id=idpai)
    else:
        pai = None

    ItensInlineFormSet = inlineformset_factory(Pais, Filhos, form=FilhosForm, extra=1)
    formPais = PaisForm()
    formsetItens = ItensInlineFormSet(instance=pai)

    return render_to_response("base.html", {
        "formPais": formPais,  "formsetItens": formsetItens
    }, context_instance=RequestContext(request), )

这形成:

class PaisForm(ModelForm):
    class Meta:
        model = Pais

class FilhosForm(ModelForm):
    class Meta:
        model = Filhos

好的,如何从模板中的“Brinq”模型中获取“descricao”值?我认为这是一个简单的问题,但是,我尝试从互联网上寻找、寻找和寻找,但我没有找到任何关于此的信息。

我开始认为使用 django 不可能做到这一点,我想相信我错了,但正如我所说,我在互联网上没有找到任何关于此的内容。

我尝试:

 {%  for form in formsetItens %}
  <tr>
       <td> {{ form.nome }}</td>
       <td> {{ form.idade }}</td>
       <td> {{ form.brinq__descricao }}</td>
  </tr>
  {% endfor %}

{{ form.brinq.descricao}}到,什么都没有...... :(

谁能帮我解决这个问题?

问候,

4

1 回答 1

0

您正在尝试迭代 FormSet。正如文档所说,“表单集使您能够迭代表单集中的表单并像使用常规表单一样显示它们”。

因此,您可以例如执行以下操作来显示表单中包含的所有字段:

{%  for form in formsetItens %}
    {{ form.as_table }}
{% endfor %}

..或者如果它适合您的用例,您可以将每个表单包装到一个表单标签中,并遍历表单字段:

{%  for form in formsetItens %}
    <form action="/contact/" method="post">
        {% for field in form %}
            <div class="fieldWrapper">
                {{ field.errors }}
                {{ field.label_tag }} {{ field }}
            </div>
        {% endfor %}
        <p><input type="submit" value="Send message" /></p>
   </form>
{% endfor %}
于 2013-08-22T14:57:18.293 回答