【发布时间】:2020-06-11 17:58:04
【问题描述】:
我希望在我的 Django 项目中使用我的一个数据库表中的值填充我的下拉列表,但它仍然是空白的,我不知道为什么。
这是我的 home.html 页面的 html 代码:
<select name="regions" id="regions">
{% for item in regions_list %}
<option val="{{ item.name_reg }}"> {{ item.name_reg }} </option>
{% endfor %}
</select>
models.py:
class data_reg(models.Model):
id = models.AutoField(primary_key=True)
name_reg = models.TextField(db_column='NAME_REG', blank=True, null=True)
class Meta:
managed = True
db_table = 'reg'
views.py:
def MyView(request):
regions_list = RegionChoiceField()
query_results_dict = {
'regions_list': regions_list,
}
return render(request,'home.html', query_results_dict)
forms.py:
class RegionChoiceField(forms.Form):
regions = forms.ModelChoiceField(
queryset=data_immo.objects.values_list("name_reg", flat=True).distinct(),
empty_label=None
)
【问题讨论】:
-
为什么要创建一个继承自 forms.Form 的 RegionChoiceField 类?
-
我最初是从其他人那里获取代码并对其进行修改。已经是这样了(除了那个 Region 被称为别的东西)。我是 Django 新手,所以目前还有很多概念不是很了解。
-
好的,所以 RegionChoiceField 只是命名不当,也许应该称为 RegionChoiceForm(因为它实际上是一个表单,而区域实际上是表单中的一个字段)。所谓的 query_results_dict 实际上是一个上下文。可能值得回顾一下这段代码中的命名约定,因为它们最终可能会混淆您将代码与 Django 文档协调一致的尝试,并影响您理解它的能力。
-
看看这个例子是否有帮助:stackoverflow.com/questions/36724255/…
-
尽管我对这个解决方案感到有些困惑,但我已经尝试过了,但结果我只有一个空的下拉菜单。这是我在模板中得到的结果,我真的不确定它是否正确: