如何从选择中获取值并将其显示在Django中的表单上? 在这种情况下(如图所示),将显示 English 而不是 en
在模板中,我将表单打印为变量{{ form }}
。我还尝试通过一个字段{{ form.language.get_lang_display }}
输出,但是在这种情况下,根本不显示语言字段。
文件 models.py
class AvailableLanguage(models.Model):
LANGUAGES = (
('en', 'English'),
('ru', 'Russian'),
)
lang = models.CharField(max_length=50, unique=True, choices=LANGUAGES)
lang_code = models.CharField(max_length=5, unique=True)
slug = models.SlugField()
class Question(models.Model):
title = models.CharField(max_length=250)
language = models.ForeignKey(AvailableLanguage, on_delete=models.CASCADE, default='')
body = models.TextField()
...
文件 forms.py
class UserQuestion(forms.ModelForm):
class Meta:
model = Question
fields = ('title', 'language', 'body')
文件 add_question.html
{% block content %}
<form action="." method="post" enctype="multipart/form-data">
{# {{ form }}#}
{{ form.language.get_lang_display }} {#Not displayed#}
{% csrf_token %}
<input class="btn--primary" type="submit" value="{% trans 'Создать' %}">
</form>
{% endblock %}
答案 0 :(得分:4)
只需从您的 AvailableLanguage 模型返回一个str函数:
class AvailableLanguage(models.Model):
LANGUAGES = (
('en', 'English'),
('ru', 'Russian'),
)
lang = models.CharField(max_length=50, unique=True, choices=LANGUAGES)
lang_code = models.CharField(max_length=5, unique=True)
slug = models.SlugField()
def __str__(self):
return self.get_lang_display()
答案 1 :(得分:0)
使用
{{ form.get_lang_display }}
代替
{{ form.language.get_lang_display }}