You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Django中实现批量创建时迭代列表出现TypeError: 'str' object is not callable错误

解决Django批量创建Job_Skillset时的TypeError: 'str' object is not callable

嘿,我看你在批量创建Job_Skillset数据的时候碰到了这个TypeError,咱们来一步步拆解解决它。

问题根源定位

从错误追踪信息可以明确看到,报错发生在这一行:

for job_skll, job_lvl in zip(job_skill_, job_skill_level):

错误提示'str' object is not callable,这意味着你代码里的zip已经不是咱们熟悉的那个内置迭代函数了——它被意外赋值成了一个字符串,当你尝试像调用函数一样使用zip()时,自然就触发了错误。

另一种可能是job_skill_或job_skill_level其中一个变量名和某个函数重名且被设为了字符串,但结合上下文来看,最常见的原因还是你不小心覆盖了内置的zip()函数。

具体解决方案

  • 排查变量名冲突
    去你的create_job视图函数里搜一搜,有没有类似这样的代码:

    zip = request.POST.get('zip_code')  # 或者其他把zip赋值为字符串的操作
    

    如果有,把这个变量名改成别的(比如user_zip_code),别和内置函数名重名。

  • 确保获取到的是列表数据
    如果job_skill_和job_skill_level是从表单的多选字段或批量提交的字段来的,一定要用getlist()而不是get(),否则你拿到的只是单个字符串,而不是可迭代的列表:

    # 正确获取批量提交的列表数据
    job_skill_ = request.POST.getlist('job_skill')
    job_skill_level = request.POST.getlist('job_skill_level')
    
  • 优化批量创建代码(可选)
    你可以用生成器表达式替代列表append,让代码更简洁高效:

    job_skill_set = (
        Job_Skillset(
            skill=Skillset.objects.get(skill_name=skill_name),
            job_post=job_pst,
            skill_level=level
        )
        for skill_name, level in zip(job_skill_, job_skill_level)
    )
    Job_Skillset.objects.bulk_create(job_skill_set)
    

    另外,建议给Skillset.objects.get()加个异常处理,避免因为某个技能名称不存在导致整个批量创建失败:

    from django.core.exceptions import ObjectDoesNotExist
    
    job_skill_set = []
    for skill_name, level in zip(job_skill_, job_skill_level):
        try:
            skill_set = Skillset.objects.get(skill_name=skill_name)
            job_skill_set.append(Job_Skillset(
                skill=skill_set,
                job_post=job_pst,
                skill_level=level
            ))
        except ObjectDoesNotExist:
            # 这里可以加日志记录,或者跳过不存在的技能
            continue
    Job_Skillset.objects.bulk_create(job_skill_set)
    

总结

先检查有没有覆盖zip内置函数,再确认你获取的是列表而非单个字符串,这两步就能解决这个报错啦。

内容的提问来源于stack exchange,提问作者Atif Shafi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 22:22:42