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

2024-03-29 09:57:13 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有以下两个Django模型。你知道吗

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

class VegetableGarden(models.Model):
    celery = models.CharField()
    turnip = models.CharField()

如果我想为用户创建一个视图,以便以相同的形式创建FruitBasketVegetableGarden,我可以为每个视图创建一个ModelForm,并将它们传递给我的视图,如下所示:

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

这将允许用户按顺序输入苹果、草莓、芹菜和芜菁字段。你知道吗

如果我想按萝卜、草莓、芹菜和苹果的顺序来展示田地呢?我想避免编写一个全新的Form类,因为我必须复制所有的验证(clean函数)。在组合两种形式时,有没有一种方法可以任意决定字段的顺序?你知道吗


Tags: 用户苹果form视图model顺序modelsas
1条回答
网友
1楼 · 发布于 2024-03-29 09:57:13

{{ 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以获取有关该主题的更多信息。你知道吗

相关问题 更多 >