Django 查询返回空白值

Posted

技术标签:

【中文标题】Django 查询返回空白值【英文标题】:Django query is returning blank values 【发布时间】:2016-06-29 21:40:09 【问题描述】:

我正在编写一个应用程序,该应用程序应在一个选择框中列出来自当地体育联盟的所有球队,用户可以从中选择他们最喜欢的球队,但是当我打开该应用程序时,一切看起来都很好,只是选择字段仅显示空白选项。我知道它正在正确查询数据库,因为它在选择框中显示了所有 18 个选项,但它们都显示为空白,我没有收到任何错误。

这是我的模型:

class Team(models.Model):
    team_id = models.CharField(primary_key=True, max_length=3)
    city = models.CharField(max_length=50)
    name = models.CharField(max_length=50)

    class Meta:
        managed = False
        db_table = 'team'

    def __unicode__(self):
        return self.team_id

我的看法:

@verified_email_required()
def crearcuenta(request):
    equipos = Team.objects.all()
    form = CuentaForm()
    if request.method == "POST":
        form = CuentaForm(request.POST)
        if form.is_valid():
            cuenta = form.save(commit=False)
            cuenta.user = request.user
            cuenta.equipo_favorito = request.POST.get("equipo", "")
            cuenta.save()
        return HttpResponseRedirect("/dashboard/")
    context = (
        "equipos": equipos,
        "form": form
    )
    return render(request, "teams/crearcuenta.html", context)

最后是html:

<div class="col-md-8 form-group mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
                        <label for="Equipo" class="col-md-3 control-label mdl-textfield__label">Correo</label>
                        <div>
                            <select id="Equipo" name="equipo" class="selectpicker form-control" data-live-search="true">
                                <option>Seleccione uno</option>
                                % for equipo in equipos %
                                    <option value=" equipos.team_id "> equipos.city   equipos.name </option>
                                % endfor %
                            </select>
                        </div>
                    </div>

谢谢!

【问题讨论】:

你在使用 AngularJS 吗? 【参考方案1】:

在你的循环中,你有

% for equipo in equipos %

在您的循环中,您想要访问单个equipo 的属性,因此您应该使用 equipo.team_id 而不是 equipos.team_id

% for equipo in equipos %
<option value=" equipo.team_id "> equipo.city   equipo.name </option>
% endfor %

理想情况下,您应该在表单中包含 equipo,并让 Django 负责呈现表单(例如 form.equipo )。这样您就不必手动呈现或验证该字段,从而防止错误。

【讨论】:

感谢 Alasdair,这就是问题所在!

以上是关于Django 查询返回空白值的主要内容,如果未能解决你的问题,请参考以下文章

子查询 django 查询以从对象中获取最大的不同值并返回这些对象

Django框架:模型 字段查询查询集

Django中的散景图返回空白页

在运行 SELECT 语句时,日期列中的空白值返回为 1900/01/01

即使数据库将 0 存储为字段值,Django 查询集对象也返回 None 而不是 0

Django外键查询,为啥它返回None?