Поскольку .get_or_create(..)
[Django -doc] возвращает 2-кортеж с первым элементом объекта (извлеченным или созданным), а вторым элементом - логическим значением, которое равно True
, если объект был создан, и False
, если его не было. Это указано в документации:
Возвращает кортеж (object, created)
, где object
- извлеченный или созданный объект, а created
- логическое значение, указывающее, является ли новый объект был создан.
Таким образом, это означает, что если мы напишем:
some_obj = MyModel.objects.get_or_created()
, то some_obj
будет 2-кортежем, а не MyModel
объектом. Мы можем использовать подписку для доступа к первому элементу, например:
some_obj = MyModel.objects.get_or_created()<b>[0]</b>
Обычно используется итеративная распаковка, и записать это как:
some_obj<b>, __</b> = MyModel.objects.get_or_created()
здесь мы сохраняем объекта в some_obj
, и мы используем другую переменную __
для сохранения логического значения, если нам все равно, создан объект или нет.