Я пытаюсь запустить скрипт миграции для моего django приложения, но я продолжаю получать TypeError: unhashable 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
- это объект курса, созданный в предыдущем коде, exclusions
- это поле «многие ко многим» от курса к самому себе, «ex» - это просто строка. если я попытаюсь использовать exclus = Course.objects.create(ID=ex)
вместо этого, это также дает ту же ошибку. Кажется, ошибка говорит о том, что исключение, которое я передаю c.exclusions.add
, является списком, но это очень явно объект. Я даже пытался переключить exclus на exclus [0], чтобы увидеть, почему он почему-то думал, что это список, но это дало мне error: Course Object not iterable
, поэтому он говорит, что он имеет тип Object, поэтому я очень запутался с сообщением об ошибке. какие-нибудь идеи?
редактировать: я думаю, что решить проблему, проблема была exclus = Course(ID=ex)
, в частности ex
. По какой-то причине в моей фазе чтения он каким-то образом был установлен в список, а не в строку, как я думал, это было