@MAGistr_MTM
Учусь программировать

Не сохраняет элемент класса. Что может быть не так?

Доброго времени суток.

===========UPD 2(Решено)==========
Нужно было просто дать завершить цикл( метод, потому что этот цикл в функции, которая обгорнутая декоратором @atomic). После завершения этого метода все продукты сохранены.

Пишу небольшой импортер(пока набросок) для импорта товаров на сайт из .csv, хотел потестить и тут же возникает странность. Не сохраняет обект класса. Если все эти операции провести в ./manage.py shell, то продукт прекрастно создается. Пробовал постмотреть в дебаггере - ничего, просто метод save() не сохраняет продукт. В чем может быть проблема?

Использую: Python 2.7 + Django 1.8 + Django-Oscar 1.1. Вот пример ипортера:
num_items = len(CIP)
        for i, cip_code in enumerate(CIP):
            self.logger.info("   - Updating product({}/{})".format(i + 1, num_items))
            if cip_code:
                try:
                    item = Product.all_objects.get(cip=cip_code)
                except Product.DoesNotExist:
                    item = Product(cip=cip_code)
            else:
                item = Product()

            if GTIN[i] != '':
                item.gtin = GTIN[i]

            if UPC[i] != '':
                item.structure = 'child'
                parent_product = Product.all_objects.get(upc=UPC[i])
                parent_product.structure = 'parent'
                parent_product.stockrecords.all().delete()
                parent_product.supplyrecord_set.all().delete()
                parent_product.save()
                item.parent = parent_product

            item.title = 'testtest'
            item.save()

            item.site.add(Site.objects.get(id=2))

            if item.parent:
                for cat in item.parent.categories.all():
                    ProductCategory.all_objects.get_or_create(
                        product=item, category=cat)
            else:
                try:
                    category = Category.all_objects.get(name='Uncategorised')
                    category.site.add(Site.objects.get(id=2))
                    category.save()
                except Category.DoesNotExist:
                    category = create_from_breadcrumbs('Uncategorised')
                    category.site.add(Site.objects.get(id=2))
                    category.save()
                ProductCategory.all_objects.get_or_create(
                    product=item, category=category)
            
            import pdb; pdb.set_trace() # debug yskhlyan
            item.save()


==========UPD=========
И еще одно, что я заметил, пока я в pdb, и в цикле иду дальше по продуктах(создаю новые), то предыдущие продукты "типа" есть, но когда выходжу из pdb и наново запускаю импортер то номерация продолжаеться, но продукты, которые были добавлены во время пред запуска импортера - не находит.

Буду очень благодарен за помощь.
  • Вопрос задан
  • 201 просмотр
Решения вопроса 1
@MAGistr_MTM Автор вопроса
Учусь программировать
Решено. Нужно было просто дать завершить цикл( метод, потому что этот цикл в функции, которая обгорнутая декоратором @atomic). После завершения этого метода все продукты сохранены.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
DmitryVoronkov
@DmitryVoronkov
Python Developer
Скорее всего у тебя не проходит валидация чего-то. добавь после save
print item.errors
Еще:
if UPC[i] != '':
Можно заменить на:
if UPC[i]:
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы