Django表单:在模板中获取外键值

时间:2015-08-30 10:19:00

标签: django

在模板中,在显示表单时,我希望将外键值显示为标签而不是选择字段,以便我可以为每个表单输入输入字段。

模特:

class Attribute(models.Model):
    key = models.CharField(max_length=100, blank=False, null=False, unique=True)

    def __str__(self):
        return self.key

例如,属性模型加载有“大小”,“颜色”,“性别”的初始数据。

class Variation(models.Model):
    attribute = models.ForeignKey(Attribute, blank=False, null=False)
    value = models.CharField(max_length=100, blank=False, null=False)

形式:

class VariationForm(forms.ModelForm):
    class Meta:
        model = Variation
        fields = "__all__"

模板:

<form action="" method="post">{% csrf_token %}
    {% for field in variation_form %}
        {% for attribute in field.attribute %}
           {{ attribute }}
        {% endfor %}
    {% endfor %}
</form>

{{attribute}}提供select小部件中的所有属性。我如何在模板中获取它们的名称/键/值,迭代它们并在每个模板中放入输入字段?

2 个答案:

答案 0 :(得分:0)

看看inline formsets。使用它们,您可以为每个外键创建单独的输入。

答案 1 :(得分:0)

或者只是改变:

<form action="" method="post">{% csrf_token %}
    {% for field in variation_form %}
           {{ field.attribute.key }}
    {% endfor %}
</form>

但您可以将视图中的for属性更改为其他内容,因为如果您反复调用它可能会导致错误:

{{ attribute.attribute.key }}

第一个属性是

时循环语句的名称

第二个属性可能是models.Variation的对象名称;

第3个是您想要访问该模型的对象