Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在一个视图中组合两个模型表单,并以任意顺序显示字段?_Python_Django_Forms - Fatal编程技术网

Python 如何在一个视图中组合两个模型表单,并以任意顺序显示字段?

Python 如何在一个视图中组合两个模型表单,并以任意顺序显示字段?,python,django,forms,Python,Django,Forms,假设我有以下两个Django模型 class FruitBasket(models.Model): apple = models.CharField() strawberry = models.CharField() class VegetableGarden(models.Model): celery = models.CharField() turnip = models.CharField() 如果我想为用户创建一个视图,以便以相同的形式创建果篮和蔬菜园

假设我有以下两个Django模型

class FruitBasket(models.Model):
    apple = models.CharField()
    strawberry = models.CharField()

class VegetableGarden(models.Model):
    celery = models.CharField()
    turnip = models.CharField()
如果我想为用户创建一个视图,以便以相同的形式创建
果篮
蔬菜园
,我可以为每个视图创建一个
模型表单
,并将它们传递给我的视图,如下所示:

<form action="" method="post">
    {% csrf_token %}
    {{ fruit_form.as_p }}
    {{ vegetable_form.as_p }}
    <input type="submit" value="Submit" />
</form>

{%csrf_令牌%}
{{水果形式.as{p}}
{{蔬菜形式.as{p}}
这将允许用户按顺序输入苹果、草莓、芹菜和萝卜字段


如果相反,我想按萝卜、草莓、芹菜和苹果的顺序展示田地,那会怎么样?我希望避免编写一个全新的
表单
类,因为我必须复制所有验证(
clean
函数)。在组合两个表单时,有没有一种方法可以任意决定字段的顺序?

{{form.as_p}}
只是显示表单的众多方法之一。您可以使用
{{form.name\u 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>

{%csrf_令牌%}
{{蔬菜萝卜}
{{水果形式的草莓}
{{蔬菜\芹菜}
{{果形苹果}
请注意,这不会显示错误。个别错误消息在
{{form.name\u of_field.errors}}
下可用,您可以使用
{{form.errors}}
访问表单错误消息


请参阅,以获取有关该主题的更多信息

谢谢!这正是我想要的。