大家好,
我有这个型号:
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}}
,而且......没有...... :(
任何人都可以帮我解决这个问题吗?
此致
答案 0 :(得分:0)
您正在尝试迭代FormSet。正如docs所说“formset使您能够迭代formset中的表单并像使用常规表单一样显示它们。”
因此,您可以执行以下操作以显示表单中包含的所有字段:
{% for form in formsetItens %}
{{ form.as_table }}
{% endfor %}
..或者如果它适合您的用例,您可以将每个表单包装到表单标记中,并loop覆盖表单字段:
{% 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 %}