Почему нельзя добавить объект модели Django в список? - PullRequest
0 голосов
/ 28 марта 2020

Я пытаюсь добавить экземпляр модели из Django в список и получить следующие результаты (из Shell):

  1. Импорт модели и создание объекта
>>> from base.models import Service
>>> s = Service.objects.first()
Проверьте тип объекта
>>> type(s) 
<class 'base.models.Service'> 
Создание списка
>>> mylist = []
Попробуйте добавить объект модели в список
>>> mylist += s 
Ошибка
Traceback (most recent call last): 
  File "<console>", line 1, in <module>
TypeError: 'Service' object is not iterable

Почему именно я не могу добавить экземпляр модели в список?

Ответы [ 2 ]

3 голосов
/ 28 марта 2020

У вас есть три опции:

mylist += [s]

или:

mylist.append(s)

или:

mylist.extend([s])

Почему вы получаете свою ошибку?

mylist += s совпадает с mylist.extend(s), которая завершается ошибкой, если одно добавление не повторяется. Тогда как перенос s в квадратные скобки делает его <class 'list'>, который теперь можно повторять. Таким образом, mylist += [s] работает так же, как mylist.extend([s]) также работает.

2 голосов
/ 28 марта 2020

Вы должны использовать

mylist.append(s)

. Помните, что вы в основном делаете

mylist = mylist + s

и, по определению оператора + в списках, s также должен быть повторяемым объектом.

См. здесь для лучшего объяснения оператора + (или .extend()) и дополнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...