@matveyvarg

Почему возникает AttributeError?

Ошибка:
AttributeError at /orders/
'NoneType' object has no attribute 'add'


Сам код:
def create(self, validated_data):

        address_data = dict(validated_data.pop('address'))
        print address_data
        address = Address.objects.create(**address_data)

        instance = Order.objects.create(address=address, **validated_data)
        session_id = self.context['request'].session.session_key
        burger_ids = SessionOrder.objects.filter(session_id=session_id)
        for item in burger_ids:
            burger = Burger.objects.get(id=item.burger_id)
            instance.burgers.add(burger)

        return instance

Проверял, instance точно не None.
  • Вопрос задан
  • 144 просмотра
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
Кроме замены типа поля burgers с ForeignKey на ManyToManyField, лучше изменить код так
burger_ids = [i.burger_id for i in SessionOrder.objects.filter(session_id=session_id)]
burgers = Burger.objects.filter(id__in=burger_ids)
instance.burgers.add(*burgers)

Это сократит количество запросов с N*2 (где N - количество экземпляров модели Burger) до двух.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы