TypeError 对象不可迭代

2023-12-22

当尝试循环 Django 模板中的变量时,出现以下错误。有问题的变量是我的 DetailView 子类中指定的模型的相关对象:

类型错误位于 /en/applicants/50771459778/

“Householdmember”对象不可迭代

这是我的models.py file:

class Applicant(models.Model):
    user              = models.ForeignKey(User, editable=False)
    bank_card_number  = models.CharField(_('Bank card number'),max_length=50, unique=True)
    site_of_interview = models.IntegerField(_('Site of interview'), choices = SITE_CHOICES, default=TIRANA, blank=False)
    housenumber       = models.CharField(_('House Number'),max_length=8)
    address_line1     = models.CharField(_('Address line 1'),max_length=50)
    address_line2     = models.CharField(_('Apt #'),max_length=50,blank=True) 
    municipality      = models.CharField(_('Municipality/commune'),max_length=25)
    district          = models.CharField(_('District'),max_length=25,blank=True)
    urban             = models.IntegerField(_('Area (urban/rural)'), choices = AREA_CHOICES, blank=False)
    postal            = models.CharField(_('Postal code'),max_length=25,blank=True) 

class Householdmember(models.Model):
    applicant         = models.ForeignKey(Applicant)
    first_name        = models.CharField(_('First name'),max_length=50,blank=False)
    middle_name       = models.CharField(_('Middle name'),max_length=50,blank=True) 
    last_name         = models.CharField(_('Last name'),max_length=50,blank=False)
    national_id       = models.CharField(_('National ID'),max_length=50,blank=False, unique=True)
    male              = models.IntegerField(_('Gender'), choices = GENDER_CHOICES, blank=False)
    date_of_birth     = models.DateField()
    rel_to_head       = models.IntegerField(_('Gender'), choices = RELTOHEAD_CHOICES, blank=False)
    disability        = models.IntegerField(_('Is disabled?'), choices = YESNO_CHOICES, blank=False)
    created_at        = models.DateTimeField(auto_now_add = True)
    updated_at        = models.DateTimeField(auto_now = True)

这是我的urls.py file:

class ListViewApplicants(ListView):
    paginate_by = 100
    def get_queryset(self):
        return Applicant.objects.all()

class DetailViewUnmask(DetailView):
    def get_object(self):
        return self.get_queryset().get(pk=mask_toggle(self.kwargs.get("pk_masked")))

urlpatterns = patterns('',
    url(r'^$',
        login_required(ListViewApplicants.as_view( 
                            template_name='applicants/index.html',
                            #context_object_name='form',
                            )),
        name='index'),
    url(r'^(?P<pk_masked>\d+)/$',
        login_required(DetailViewUnmask.as_view( model=Applicant,
                            template_name='applicants/detail.html'
                            )), 
        name='detail'),

这是我的模板的相关部分,detail.html:

<h2>Household members</h2>
<table class="package_detail">
    <tr>
        {% include "applicants/householdmember_heading_snippet.html" %}
    </tr>
    
    {% for householdmember in applicant.householdmember_set.all %}
    <tr>
        
        {% for field in householdmember %}
            <td>{{ field }}</td>
        {% endfor %}
        <!--
        <td>{{ householdmember.first_name }}</td>
        <td>{{ householdmember.middle_name  }}</td>
        <td>{{ householdmember.last_name  }}</td>
        <td>{{ householdmember.national_id  }}</td>
        <td>{{ householdmember.get_male_display }}</td>
        <td>{{ householdmember.date_of_birth }}</td>
        <td>{{ householdmember.get_rel_to_head_display }}</td>
        <td>{{ householdmember.get_disability_display }}</td>
        -->
    </tr>
    {% endfor %}
</table>

被注释掉的部分(即之间的部分<!-- -->标签)有效,这让我认为我应该能够迭代householdmember多变的。但是当我尝试这样做时,它不起作用 - 我只是得到上面的 TypeError 。

我在 stackoverflow.com 上广泛搜索了答案,但我能找到的最接近的答案是:django 如何循环遍历通用详细视图传回的上下文对象? https://stackoverflow.com/questions/6693026/django-how-to-loop-through-the-context-object-passed-back-by-a-generic-detailvie,但它并没有解决我的问题,我想是因为我正在使用基于类的视图。

非常感谢任何帮助。谢谢!


您无法迭代模型实例。 我建议您使用您的注释代码。

如果你仍然想使用for循环,也许你可以添加以下代码:

class Householdmember(models.Model):
    # all yuur fields...

    def __iter__(self):
        return return [field.value_to_string(self) for field in Householdmember._meta.fields]

但是,没有人建议

这样更好:

class Householdmember(models.Model):
    # all yuur fields...

    def __iter__(self):
        return [ self.first_name, 
                 self.middle_name, 
                 self.last_name, 
                 self.national_id, 
                 self.get_male_display, 
                 self.date_of_birth, 
                 self.get_rel_to_head_display, 
                 self.get_disability_display ] 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TypeError 对象不可迭代 的相关文章

随机推荐

  • PHP:iCal 创建,如何在描述中换行

    我正在使用以下内容为 PHP 脚本创建 Outlook 日历邀请 然而 n 并没有在 Outlook 中给我一个新行 有没有办法做到这一点 如果你不能的话 那就显得很愚蠢了 function addToCalendar calEmail c
  • 选择影子根中的元素

    我想更改隐藏在影子根中的元素的属性 由于项目的性质 我无法直接引用 JS 中的文档 我只能使用自定义类 不适用于影子根 或 jQuery 但我不知道如何编写指向该文件的路径元素 该元素没有 部分 因此我无法在选择器中使用它 我已经尝试过的
  • PHP:回调函数

    PHP 中的某些函数需要回调函数 我如何自己在函数中执行此操作 首先 如何定义需要回调函数的函数 其次 如何提供自定义函数作为回调函数 如何提供常规函数 实例函数和静态函数 使用内置的call user func http php net
  • 使用Python从设备获取MAC地址

    我正在寻找一种方法 使用python 来获取layer II来自我本地网络上的设备的地址 Layer III地址是已知的 目标是构建一个脚本 定期轮询 IP 地址数据库 确保 MAC 地址没有更改 如果更改 则通过电子邮件向我发出警报 使用
  • 嵌入带有参数的 svg 对象

    谁有想法或提示 我想在 die svg 标签中嵌入一个 svg 对象并更改此参数 HTML SVG 未进行
  • 如何使用 Javascript 截断/切片/修剪字符串中的最后一个字符?

    我有一根绳子 12345 00 我希望它返回12345 0 我看过trim 但看起来它只是修剪空白并且slice我不明白这是如何运作的 有什么建议么 您可以使用子串 https developer mozilla org en US doc
  • 在 SQL Server 2008 R2 脚本向导中缺少脚本数据

    在我的 SQL Server 2008 R2 中 脚本向导的脚本选项屏幕在 表 视图选项 部分下查找我找到 脚本数据 行并希望将该选项设置为 True 但失败了 我没有找到任何脚本数据选项 为什么我的 SQL Server 2008 R2
  • PHP检查文件是否为音频文件

    我正在编写代码来上传音频文件 可以是任何格式 mp3 mp4 wav 等等 我不想编写所有 mime 类型的所有条件 然后检查上传的文件以验证 mime 类型 因为 我想接受所有音频文件 不仅仅是一两种格式 那么 有没有什么简单的方法来检查
  • Ionic 2 存储在卸载时不会清理 - 仅适用于已签名的 APK

    我正在使用 Ionic 2 存储来存储用户凭据 卸载应用程序时 存储不会清除 因此重新安装后 应用程序将获取先前用户的用户凭据 此问题仅发生在签名的 APK 中 在 Samsung on7 和 lenovo vivi 型号上进行了测试 卸载
  • iOS如何根据其中的UILabel制作UIView的动态宽度/自动布局

    我可能正在努力解决一些菜鸟问题 我有一个UIView其中我显示一些价格 我想要UIView根据价格具有动态宽度 如果是 1 欧元 那么它将是例如20pt 如果是 2300 欧元 那么就会像50pt宽度 我试图利用故事板的限制 但没有成功 是
  • Spring 和 /* url 模式

    我们有一个 的 url 模式并且请求到达我们的控制器 但我们总是得到 404 这是我们的 web xml
  • 谷歌面积图线下可变不透明度?

    我正在使用谷歌图表中的面积图 我想知道是否有办法设置每条线的不透明度 看这个例子 https developers google com chart interactive docs gallery areachart hl nl Simp
  • 如果参数为 NULL,如何从 WHERE 子句中删除条件

    我将 2 个参数传递给 PL pgSQL 函数 这是查询 SELECT FROM table WHERE col1 param1 AND col2 param2 两个参数都可以为 NULL 在这种情况下 应从WHERE clause 我怎样
  • 带 2 个按钮的警报

    我将在我的应用程序中添加一个指向网站的链接 用户将单击一个显示 网站 的按钮 然后将出现一个带有 2 个按钮的警报 其中一个按钮只是取消按钮 另一个按钮将打开网站 你能帮我解决这个问题吗 Thanks 将其放入您的头文件中 interfac
  • 使用互斥锁时尝试引用已删除的函数

    我在处理项目时遇到奇怪的错误 我创建了一个超级简单的示例来重现错误 我创建了一个类 我想在这个类中做的是为我的类提供一种 getter 函数来填充 a 的值struct 在主应用程序中 用户将实例化这个struct 将其传递给成员函数 并能
  • Z3 Solver Java API:意外行为

    通过向求解器添加条件 我想使用 solver check 检查是否存在解 因此 我创建了一个简单的示例来寻找 t1 的解决方案 我知道 t1 有一个解 即 t1 0 然而 求解器的状态不是 SATISFIABLE public static
  • 将 base64 字符串转换为与 OpenCV 兼容的图像

    我正在尝试将 JPEG 的 Base64 表示形式转换为可与 OpenCV 一起使用的图像 问题是我希望能够做到这一点而不必物理保存照片 我希望它保留在内存中 有更新的方法来实现这一点吗 我正在使用 python 3 6 2 和 OpenC
  • ZMQ套接字连接超时

    我正在使用 ZMQ cppzmq 的 C 绑定 并且尝试使用以下命令设置 TCP 套接字的连接超时 setsockopt 这样的方法 int connectTimeout 1000 socket setsockopt ZMQ CONNECT
  • 替换对shared_ptr中对象的所有引用

    是否可以替换shared ptr的多个实例引用的对象 可能我不太清楚 我举个例子 shared ptr a new Derived1 auto b a auto c b This function replaces the object w
  • TypeError 对象不可迭代

    当尝试循环 Django 模板中的变量时 出现以下错误 有问题的变量是我的 DetailView 子类中指定的模型的相关对象 类型错误位于 en applicants 50771459778 Householdmember 对象不可迭代 这