Django 如何显示选项名称而不是选项值?

Django 如何显示选项名称而不是选项值?,django,django-templates,django-forms,Django,Django Templates,Django Forms,我在get_FOO_display上翻来翻去都没用,下面是我得到的(我修剪了一些东西,使它更容易阅读,比如自定义的def保存: class Profile(models.Model): LEVEL_CHOICES = ( (1, 'Primary'), (2, 'Secondary'), (3, 'Tertiary'), ) level = models.IntegerField( verbose_name = 'Level', blank=True, null=True, choices=L

我在get_FOO_display上翻来翻去都没用,下面是我得到的(我修剪了一些东西,使它更容易阅读,比如自定义的def保存:

class Profile(models.Model):
LEVEL_CHOICES = (
(1, 'Primary'),
(2, 'Secondary'),
(3, 'Tertiary'),
)

level = models.IntegerField( verbose_name = 'Level', blank=True, null=True, choices=LEVEL_CHOICES)
piplevel = models.ForeignKey(AccessLevel, related_name='profiles')
vanity = models.ForeignKey(AccessLevel, related_name='vanity')



class ProfileForm(forms.ModelForm):
    class Meta:
        model = Profile


 # HTML CODE from Template below
    <tbody>
        {% for field in user_form %}
        <tr>
                            <th>{{ field.label_tag }}</th>
                            <td class="updatable">
                                <div class="field">
                                    {{ field }}
                                </div>
                                {% if field.errors %}{{ field.errors }}{% endif %}
                            </td>
        </tr>
        {% endfor %}

        {% for field in profile_form %}
        <tr>
                            <th>{{ field.label_tag }}</th>
                            <td class="updatable">
                                <div class="field">
                                    {{ field }}
                                </div>
                                {% if field.errors %}{{ field.errors }}{% endif %}
                            </td>
                        </tr>
        {% endfor %}
    </tbody>
类配置文件(models.Model):
级别_选项=(
(1,“主要”),
(二)"次",,
(3,'第三'),
)
level=models.IntegerField(verbose\u name='level',blank=True,null=True,choices=level\u choices)
piplevel=models.ForeignKey(AccessLevel,相关的\u name='profiles')
虚荣=模型。外键(AccessLevel,相关的_name='Vanite')
类ProfileForm(forms.ModelForm):
类元:
模型=外形
#下面模板中的HTML代码
{user_form%}中字段的%
{{field.label_tag}
{{field}}
{%if-field.errors%}{{field.errors}{%endif%}
{%endfor%}
{%用于配置文件中的字段\形式%}
{{field.label_tag}
{{field}}
{%if-field.errors%}{{field.errors}{%endif%}
{%endfor%}
我得到的输出:

一级
第15级
虚荣20

我想要的输出:

初级水平
皮普级钻石
虚荣大使

我试着用{field.get.level.display}和{{field.get.get\u pipflevel\u display}替换{{field}}和for循环,但是它们只是返回空白。当这些显示时,它们是一个下拉菜单,并且所有命名的选项都可用-也就是说,当我点击“15”时,我确实得到一个选项列表,即:

Piplevel 15单击(当前选择的是15)(option value=“1”>常规(/option>(option value=“2”>白金(/option>等)(非html代码)

我是否缺少Django中的一些简单函数

编辑:这是我目前得到的HTML输出

 <tr class="even">
<th>
<label for="id_piplevel">Piplevel</label>
</th>
<td class="updatable" title="Click to modify">
<div class="field" style="display: none;">
<select id="id_piplevel" name="piplevel">
<option value="">---------</option>
<option value="1">Regular</option>
<option value="2">Platinum</option>
...
<option selected="selected" value="7">Emerald</option>
</select>
</div>
<div>7</div>
</td>
</tr>

皮普莱尔
---------
有规律的
铂金
...
翡翠的
7.
理想情况下,以下是我想要的HTML输出:

 <tr class="even">
<th>
<label for="id_piplevel">Piplevel</label>
</th>
<td class="updatable" title="Click to modify">
<div class="field" style="display: none;">
<select id="id_piplevel" name="piplevel">
<option value="">---------</option>
<option value="1">Regular</option>
<option value="2">Platinum</option>
...
<option selected="selected" value="7">Emerald</option>
</select>
</div>
<div>Emerald</div>
</td>
</tr>

皮普莱尔
---------
有规律的
铂金
...
翡翠的
翡翠的
如果我将{{field}替换为{{field.get\u piplevel\u display}或{{field.choice.get\u piplevel\u display},我会得到以下输出:

<tr class="even">
<th>
<label for="id_piplevel">Piplevel</label>
</th>
<td class="updatable">
<div class="field"> </div>
</td>
</tr>

皮普莱尔

这似乎是每个人都想要的东西,所以我希望Django中会有一些论点,只是…解决了这个问题,但我找不到。很抱歉让一个简单的问题变得如此复杂-这应该是一个简单的问题,不是吗?

我真的不明白你想做什么,但是:

{{field.get.level.display}}
应该是

{{field.choices.get_level_display}}
# or
{{field.get_level_display}}

对于每个具有选项的字段,Django会自动在模型()上添加一个
get\u FOO\u display()
方法。该方法所做的只是获取字段中已存储的值,在提供的字段选项中查找该值,并返回该值的“display”文本

此方法在字段或表单上不可用。您必须引用现有对象或表单实例(例如
form.instance


同样,我也不确定您想要完成什么,因为
已经填充,因此它们显示的是文本而不是基础值。即使您正在编辑现有对象,
仍将显示当前设置值的显示文本。

这没有多大意义。这是templat用于显示表单的e代码,并且您已经声明字段使用selects正确显示。“输出”在哪里这应该不起作用吧?抱歉,问题是此表显示的是数值。我希望该表显示的是名称。我不明白为什么下拉菜单中有所有选项名称,但“默认显示”是相对无用的整数。谢谢尝试!这不起作用;这两个选项都给了我空白表。M如果我包含HTML输出可能会有帮助吗?如果你提供完整的模板代码,会有更大的帮助。从你提供的部分snipet中获取你想要的输出或你声称得到的输出实际上是不可能的。我编辑了原始帖子以包含完整的模板代码。我认为下面还有其他一些根本问题我的整个项目都很忙-因为似乎没有其他人“理解”我的问题。不过,感谢您的尝试!所以…您是说我应该修改.py文件以包含以下内容:,