无法使用django for循环使用bootstrap的输入选择下拉框

时间:2015-07-21 14:45:59

标签: django twitter-bootstrap

当我使用输入选择时,我无法使用bootstrap使我的django正常工作。 标签和框出现,但没有任何内容。在盒子下方,我看到了所有的设备ID。我无法将它们放入盒子中。我错过了什么?

<div class="form-group">
    <label for="equipment_id" control-label">{{ form.equipment_id.label }}</label> 
    {% for equip in form.equipment_id %}
        <select id="equipment_id" name="equipment_id" class="form-control">
            <option>{{ equip }}</option>
        </select>
    {% endfor %}
    <p>{{ form.equipment_id.errors.as_text }}</p>
</div>

{% extends "base.html" %}
{% load bootstrap %} <!--using app `django-bootstrap-form` app name: `bootstrapform` -->
{% block content %}


<div class="container">

    <form class="form-horizontal" method="post">{% csrf_token %}
        <legend>Report Incident</legend>

        {{ form.incident_date_time_occurred|bootstrap_horizontal }}
        {{ form.incident_category|bootstrap_horizontal }}
        {{ form.clinical_sample|bootstrap_horizontal }}
        {{ form.number_of_clinical_samples|bootstrap_horizontal }}
        <div class="form-group">
            <div class="col-sm-10 col-sm-offset-2">
                <p>(If not a clinical sample please leave as zero)</p>
            </div>
        </div>

        <select multiple="multiple" class=" form-control" id="id_multiple_choice" name="multiple_choice">
        {% for tech in form.technician %}
        <option>{{ tech }}</option>
        {% endfor %}
        </select>

        <div class="form-group">
            <div class="col-sm-10 col-sm-offset-2">
                <button type="submit" class="btn btn-primary btn-block">Submit</button>
            </div>
        </div>

    </form> 
</div>

{% endblock %}

models.py

class Incident(models.Model):
       incident_date_time_reported = models.DateTimeField('incident reported', default=timezone.now)
       user_id = models.ForeignKey(User, related_name='user')
       incident_date_time_occurred = models.DateTimeField('incident occurred', default=timezone.now)
       clinical_sample = models.BooleanField('clinical sample?', default=True)
       number_of_clinical_samples = models.IntegerField('Number of clinical samples', default=0)
       sample_id_numbers = models.CharField(max_length=500)
       equipment_id = models.ForeignKey(Equipment)
       incident_category = models.ForeignKey(Incident_Category)
       technician = models.ForeignKey(User, related_name='technician')

1 个答案:

答案 0 :(得分:2)

假设此div正确包含在表单标记中:

  1. 您应该使用form.equipment,equipment_id只有ID号。

  2. 您正在尝试迭代创建选项,但您的选择标记位于for循环中,因此您要为每个设备对象创建一个选择,而不是每个选项都有一个选项。

    < / LI>
  3. 没有其余的代码,目前还不清楚是否还有其他问题。

  4. 我假设你要做的是让表单显示bootstrap属性。更清晰的解决方案是使用包django-bootstrap-forms(pip install django-bootstrap-forms),将其包含在{% load bootstrap %}的模板中,并按如下方式使用:

    <form id="form" class="form" method="post">
        {% csrf_token %}
        {{ form|bootstrap }}
        <div class="form-actions">
            <button id="create_submit" class="btn btn-default" type="submit">Save</button>
        </div>
    </form>
    

    <强>更新

    您仍在错误地迭代选项。正确就像是:

    {% for value,text in form.technician.choices %}
        <option value="{{ value }}">{{ text }}</option>
    {% endfor %}
    

    如果技术人员是外键字段(每个模型实例只允许一个),则可能会遇到实际发布表单的问题。但这是一个单独的问题:)