Выполнять операции CRUD для класса продукта? - PullRequest
0 голосов
/ 28 июня 2019

Я новичок в Django-oscar и пытаюсь разработать простую операцию CRUD на Product. Я разветвлял приложение каталога и создал views.py файл

Я запустил запрос Product.objects.create(title='Hello'), и продукт был создан со следующей ошибкой:

AttributeError: у объекта 'NoneType' нет атрибута 'атрибуты'

product_title = 'MyPhone'
upc=987654321
product_class = ProductClass.objects.get_or_create(name='Phone')
def createProduct(request):
        line1
    product.name = product_title
    product.product_class = product_class
    product.upc=upc
    product.save()

Когда я помещаю product=Product() в строку 1, я получаю следующую ошибку:

Невозможно назначить "(, False)": "Product.product_class" должен быть экземпляром "ProductClass".

Когда я ставлю product = Product.objects.create(upc=upc), я получаю следующую ошибку:

NoneType 'объект не имеет атрибута' attribute '

Кто-нибудь подскажет, как написать простую операцию создания?

1 Ответ

0 голосов
/ 28 июня 2019
ProductClass, Product, Category, ProductCategory = get_classes(
    'catalogue.models', ('ProductClass', 'Product', 'Category',
                         'ProductCategory'))
create_from_breadcrumbs = get_class('catalogue.categories', 'create_from_breadcrumbs')


 def _create_item(product_class, category_str, upc, title,
                     description, stats):
        # Ignore any entries that are NULL
        if description == 'NULL':
            description = ''

        # Create item class and item
        product_class, __ = ProductClass.objects.get_or_create(name=product_class)
        try:
            item = Product.objects.get(upc=upc)
            stats['updated_items'] += 1
        except Product.DoesNotExist:
            item = Product()
            stats['new_items'] += 1
        item.upc = upc
        item.title = title
        item.description = description
        item.product_class = product_class
        item.save()

        # Category
        cat = create_from_breadcrumbs(category_str)
        ProductCategory.objects.update_or_create(product=item, category=cat)

        return item

Это фактический способ манипулирования продуктами с предоставленной информацией для функции в django oscar. Для лучших дизайнерских решений вы должны следовать этой конвенции. Измените его, как вы хотите. Дайте мне знать, если вам нужна дополнительная помощь. Спасибо.

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