我正在编写一个应用程序,它应该在一个选择框中列出本地体育联盟的所有球队,用户可以从中选择他们最喜欢的球队,但是当我打开该应用程序时,除了“选择”字段只显示空白选项外,其他一切看起来都很好。我知道它在正确地查询数据库,因为它在选择框中显示了所有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>

谢谢!

最佳答案

在你的圈子里,你有

{% 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 }})。这样就不必手动渲染或验证字段,这样可以避免错误。

10-07 15:54