【问题标题】:Django 'model' object is not iterable errorDjango 'model' 对象不是可迭代的错误
【发布时间】:2021-08-21 02:17:08
【问题描述】:

我有一个问题希望您帮助我。

我有一个显示良好的用户列表,但是当我尝试编辑用户时出现错误:Django 'Residente' object is not iterable。这是我的代码:

residente_list.html

<div class="card-body">
    {% if not obj %}
        <div class="alert alert-info">No hay Residentes</div>
    {% else %}
    <table class="table table-striped table-hover">
        <thead>
        <th>Nombres</th>
        <th>Genero</th>
        <th>T.Documento</th>
        <th>N.Documento</th>
        <th>Residencia</th>
        <th>Estado</th>
        <th class="all">Acciones</th>
        </thead>
        <tbody>
            {% for item in obj %}
                <tr>
                    <td>{{ item.nombre_completo }}</td>
                    <td>{{ item.genero }}</td>
                    <td>{{ item.t_doc }}</td>
                    <td>{{ item.numero_doc }}</td>
                    <td>{{ item.residencia }}</td>
                    <td>{{ item.estado|yesno:"Activo, Inactivo" }}</td>
                    <td>
                        <a href="{% url 'res:residentes_edit' item.id %}" class="btn btn-warning btn-circle" role="button"><i class="far fa-edit"></i></a>
                        <a href="#" class="btn btn-danger btn-circle" role="button"><i class="far fa-trash-alt"></i></a>
                    </td>
                </tr>
            {% endfor %}
        </tbody>
    </table>
    {% endif %}
</div>

views.py

class ResidenteEdit(LoginRequiredMixin, generic.UpdateView):
model = Residente
template_name = "res/residente_form.html"
context_object_name = "obj"
form_class = ResidenteForm
success_url = reverse_lazy("res:residentes_list")
login_url = 'bases:login'
success_message = "Residente Editado Satisfactoriamente"

urls.py

path('residentes/edit/<int:pk>', ResidenteEdit.as_view(), name='residentes_edit'),

models.py

class Residente(models.Model):
nombre_completo = models.CharField(
    max_length=100,
    unique=True)

genero = models.ForeignKey(Genero, on_delete=models.CASCADE)
t_doc = models.ForeignKey(Tdocs, on_delete=models.CASCADE)
numero_doc = models.CharField(max_length=100)
residencia = models.ForeignKey(Predio, on_delete=models.CASCADE)
estado = models.BooleanField(default=True)

感谢您的帮助

【问题讨论】:

    标签: django object model iterable


    【解决方案1】:

    当您在列表视图中时,您通常会处理很多对象(在您的情况下,很多 Residente's),但是当您编辑它们时,您只有一个,因此,您不需要

    {% for item in obj %}

    你可以这样做

    obj.nombre_completo
    obj.genero
    #...
    #etc
    

    这应该在您的residente_form.html 文件中完成。

    我怀疑您正试图在您的 residente_form.html 中运行循环。如果您仍然无法解决问题,请尝试在此处发布您的residente_form.html

    【讨论】:

      猜你喜欢
      • 2018-02-02
      • 2022-11-29
      • 2013-12-01
      • 2021-11-15
      • 2011-10-05
      • 2023-03-06
      • 1970-01-01
      • 2017-06-12
      • 1970-01-01
      相关资源
      最近更新 更多