问题在HTML模板中分配表单字段django

时间:2017-07-06 02:05:33

标签: django django-templates

我有一个模型表单,我想知道是否可以采用模型表单并在模板html文件中通过for循环运行时指定特定字段的名称。

以下是我在当前的html模板中所拥有的内容:

{% extends "base.html" %}

{% block content %}
  <h1>Add members to {{record.name}}</h1>
  {% if message %}
    <p>{{message}}</p>
  {% endif %}
  <form action="." method="POST">
    {% csrf_token %}
    {% for trans in transactions %}
      {% if trans.record.id == record.id %}
        {{ trans.user.username }}
        {{ form.as_p }}
      {% endif %}
    {% endfor %}
    <p>Tax: <input type="text" name="tax" value=""></p>
    <p>Tip: <input type="text" name="tip" value=""></p>
    <input type="submit" name="submit" value="submit">
  </form>
{% endblock %}

这是当前的表单模型:

class IndividualSplitTransactionForm(forms.ModelForm):
    class Meta:
        model = Transaction
        fields = ['amount', 'description']

目前格式如下:

omar
amount
description
hani
amount
description
assad
amount
description
tax
tip

所以当我处理它并且我想获取分配给每个特定用户的金额并更新记录时。我希望它看起来像这样,以便在视图中更容易处理。

omar
omaramount
omardescription
hani
haniamount
hanidescription
assad
assadamount
assaddescription
tax
tip

这样当我正在处理时,我可以在我用金额更新现有记录时为每个用户正确分配更正金额和描述。

是否可以在模板本身内完成,或者我必须在其他地方执行此操作。

已更新

所以我试图改变我的代码并更新它以获得我想要的东西,但这就是我得到的......

这是html

 {% extends "base.html" %}

{% block content %}
  <h1>Add members to {{record.name}}</h1>
  {% if message %}
    <p>{{message}}</p>
  {% endif %}
  <form action="." method="POST">
    {% csrf_token %}
    {% for trans in transactions %}
      {% if trans.record.id == record.id %}
        {% for field in form %}
          <div class="fieldWrapper">
            {{ field.errors }}
            {{ trans.user.username }}{{ field.label }}{{ field|safe }}
          </div>
        {% endfor %}
      {% endif %}
    {% endfor %}
    <p>Tax: <input type="text" name="tax" value=""></p>
    <p>Tip: <input type="text" name="tip" value=""></p>
    <input type="submit" name="submit" value="submit">
  </form>
{% endblock %}

这就是我得到的。

request returs

因此,如果您查看图像,它仍然只是返回我输入的三个的最后一个数量和描述...我应该在html文件中手动创建整个表单....

1 个答案:

答案 0 :(得分:0)

如果您想要username + amountusername + description,那么您需要更改form.as_p,因为您将获得每个字段的html <p><p/>标记,其前面带有标签

您希望动态添加username,然后设计自己的form manually html内容。

有一个label_suffix,但前缀不可用。即使使用suffix,您也应该在创建表单对象时执行此操作。

<强>更新

{% for field in form %}
    <div class="fieldWrapper">
        {{ field.errors }}
        {{ trans.user.username }} {{ field.label_tag }} {{ field }}
        {% if field.help_text %}
        <p class="help">{{ field.help_text|safe }}</p>
        {% endif %}
    </div>
{% endfor %}