在模板中,在显示表单时,我希望将外键值显示为标签而不是选择字段,以便我可以为每个表单输入输入字段。
模特:
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小部件中的所有属性。我如何在模板中获取它们的名称/键/值,迭代它们并在每个模板中放入输入字段?
答案 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个是您想要访问该模型的对象