让我们说我有以下两个Django模型。
class FruitBasket(models.Model):
apple = models.CharField()
strawberry = models.CharField()
class VegetableGarden(models.Model):
celery = models.CharField()
turnip = models.CharField()
如果我想为用户创建一个视图,以便在同一表单中创建FruitBasket
和VegetableGarden
,我可以为每个创建一个ModelForm
并将其传递给我像这样看:
<form action="" method="post">
{% csrf_token %}
{{ fruit_form.as_p }}
{{ vegetable_form.as_p }}
<input type="submit" value="Submit" />
</form>
这将允许用户按顺序输入苹果,草莓,芹菜和萝卜字段。
相反,如果我想在萝卜,草莓,芹菜和苹果中显示字段,该怎么办?我想避免编写一个全新的Form
类,因为我必须复制所有验证(clean
函数)。在组合两种形式时,有没有办法随意决定字段的顺序?
答案 0 :(得分:1)
{{ form.as_p }}
只是展示表单的众多方法之一。您可以使用{{ form.name_of_field }}
语法输出每个字段的小部件:
<form action="" method="post">
{% csrf_token %}
{{ vegetable_form.turnip }}
{{ fruit_form.strawberry }}
{{ vegetable_form.celery }}
{{ fruit_form.apple }}
<input type="submit" value="Submit" />
</form>
请注意,这不会显示错误。 {{ form.name_of_field.errors }}
下提供了各个错误消息,您可以使用{{ form.errors }}
访问表单错误消息。
请查看customizing the form template以获取有关此主题的更多信息。