django中的select选项没有显示正确的数据

时间:2012-11-13 12:50:21

标签: django drop-down-menu django-models django-templates

任何人都可以帮我解决这个问题。非常感谢帮助。感谢。

这是我的程序

template.html

<tbody>
{% for condition in conditioner %}
{{ condition.owner }}
{% with "#CCE6FF" as bgcolor %} 
<tr>
    <td style="height: 30">{{ condition.NEW_DATE }}</td>
    <td>
        <select class="SMOKER select_input" name="condition">
            <option value="{{condition.SMOKER.01}}" >Never</option>
            <option value="{{condition.SMOKER.02}}" >Ex-Smoker</option>
        </select>
    <td><input type="text" name="condition" id="condition{{ forloop.counter }}" value="{{ condition.WEIGHT }}" /></td>
    <td><input type="text" name="condition" id="condition{{ forloop.counter }}" value="{{ condition.HEIGHT }}" /></td>
    <td><input type="text" name="condition" id="condition{{ forloop.counter }}" value="{{ condition.BP }}" /></td>
</tr>
----more program---

models.py

class Condition(models.Model):
owner = models.ForeignKey(Afdeling)
CPR = models.ForeignKey(Patient)
NEW_DATE = models.DateField(null = True, blank = True)

smoker = (("01" , 'Never'),
         ("02" , 'Ex-Smoker'),

SMOKER      = models.CharField(max_length = 2, choices = smoker, null = True, blank = True)    

WEIGHT      = models.DecimalField(max_digits = 5, decimal_places = 1, null = True, blank = True)

HEIGHT      = models.DecimalField(max_digits = 5, decimal_places = 1, null = True, blank = True)

BP = models.SmallIntegerField(max_length = 3, null = True, blank = True)
----more models.py---

Condition output

它显示表格和选定的选项,但它没有显示正确的数据。

  

在我的数据库中,19确定应该是Ex-Smoker,但是在这里它从未显示给所有专栏。

表格的html是:

<select class="SMOKER select_input" name="condition">
<option value="2" >Never</option>
<option value >Ex-Smoker</option>
</select>

我希望我的解释是可以理解的,如果有人需要更多澄清,我会尽力解释。我真的需要帮助。非常感谢你。

1 个答案:

答案 0 :(得分:2)

我承认我并不完全理解,例如您尝试使用{{condition.SMOKER.01}}做什么,看起来您更愿意做{{ condition.smoker.0.0 }}{{ condition.smoker.1.0 }}会分别输出0102,就像在python condition.smoker[0][0]condition.smoker[0][1]中一样。

无论如何,关于这个:

  

在我的数据库中,19确定应该是Ex-Smoker,但是在这里它从未显示给所有专栏。

这只是因为你从未在selected="selected"中设置选项。也许它应该是这样的:

    <select class="SMOKER select_input" name="condition">
        <option value="{{condition.smoker.0.0}}" {% if condition.SMOKER == condition.smoker.0.0 %}selected="selected"{% endif %}>Never</option>
        <option value="{{condition.smoker.1.0}}" {% if condition.SMOKER == condition.smoker.1.0 %}selected="selected"{% endif %}>Ex-Smoker</option>
    </select>

希望这会有所帮助。但正如我所说,很难理解你要做什么以及你故意违反通用标准这一事实并没有帮助:对属性名称使用大写字母而对伪常数使用小写字母则与我们使用的方法相反要做的 - 以及您在django文档中可以看到的内容:

class Condition(models.Model):
    SMOKER_CHOICES = (
        ("01" , 'Never'),
        ("02" , 'Ex-Smoker'),
    )
    smoker = models.CharField(max_length=2, choices=SMOKER_CHOICES)
    # etc ....

所以也许你只是对自己的气质感到困惑?