Python Django无法使用的类型列表,即使我传入了一个对象?(多对多字段)

Python Django无法使用的类型列表,即使我传入了一个对象?(多对多字段),python,django,django-migrations,django-database,Python,Django,Django Migrations,Django Database,我正在尝试为我的django应用程序运行迁移脚本,但我一直得到TypeError:unhabable type:'list',即使我正在传递一个对象: 我得到: error line 87, in buildCisc c.exclusions.add(exclus) line 944, in add self._add_items( line 1119, in _add_items target_ids = self._get_target_ids(target_fie

我正在尝试为我的django应用程序运行迁移脚本,但我一直得到
TypeError:unhabable type:'list'
,即使我正在传递一个对象:

我得到:

 error line 87, in buildCisc
    c.exclusions.add(exclus)
line 944, in add
    self._add_items(
line 1119, in _add_items
    target_ids = self._get_target_ids(target_field_name, objs)
line 1059, in _get_target_ids
    target_ids.add(target_id)
TypeError: unhashable type: 'list'
当我运行以下代码时

...

        for ex in exclusionList:
            if len(Course.objects.filter(ID=ex)) > 0:  # exclusion course already exsists
                exclus = Course.objects.filter(ID=ex)
                c.exclusions.add(exclus[0])
            else:  # exclusion course does not exsist yet so we must create it first
                exclus = Course(ID=ex)
                exclus.save()
                c.exclusions.add(exclus) #this is line 87 causing the error
其中,
c
是在前面的代码中创建的课程对象,
excludes
是从课程到自身的多对多字段,“ex”只是一个字符串。 如果我尝试使用
exclus=Course.objects.create(ID=ex)
,也会出现同样的错误。错误似乎是说我传递给
c.exclusions.add
的exclus是一个列表,但它显然是一个对象。我甚至尝试将exclus切换到exclus[0]以查看它是否认为它是一个列表,但这给了我
错误:课程对象不可编辑
,所以它说它是Object类型,所以我对错误消息感到非常困惑。有什么想法吗


编辑:我相信已经解决了这个问题,
excus=Course(ID=ex)
就是问题所在,特别是
ex
。由于某种原因,在我的读入阶段,它以某种方式被设置为一个列表,而不是像我想象的那样的字符串,因为
c
是一个课程对象,它包含一个列表,这是不能散列的部分。尝试使用
.append()
而不是
.add()
add()
方法适用于集合,这些集合需要对对象进行散列,因为它需要比较项目的唯一性。

不幸的是,使用该方法给了我一个新的错误:
AttributeError:'ManyRelatedManager'对象没有属性“append”
你能发布你的课程模型,让我们看看它是如何定义的吗?