Проверка существования чего-либо и добавление или получение объекта из django

Я создаю магазин из Woocommerce, и я хотел бы взять название бренда товара, и сравнить, есть ли уже такое название в базе данных, и если да, то поместить его id в нашу базу, а если нет, то создать экземпляр productProducer

        for page in range (99, 100):
            parameters = {'per_page': 1, 'page': f'{page}', 'stock_status': 'instock', 'status': 'publish'}
            products = wcapi.get("products", params=parameters).json()

            for product in products:
                print(product)
                name = product['name']
                slug = product['slug']
                description = product['description']
                id = product['id']
                price = product['price']
                link = product['permalink']

                for brands in product['images']:
                    brands_name = brands['name']

                for image in product['images']:
                    src = image['src']

                print(product['categories'])
                parsed_categories = []
                for category in product['categories']:
                    parsed_categories.append(dir[str(category['id'])])
                print(parsed_categories)
                
                db_product = Product.objects.create(name=name, slug=slug, product_producer_id=1, unique_id=int(id),
                                            description=description)
                db_product.product_category.set(parsed_categories)
                ProductInStore.objects.create(product=db_product, store_id=1, price=price, currency='PLN', url=link)
                ProductImage.objects.create(product=db_product, url=src)

У меня есть dir с отображением ключей и значений для парсинга категорий снаружи.

Модели выглядят следующим образом:

class ProductImage(models.Model):
    product = models.ForeignKey('Product', on_delete=models.CASCADE)
    filename = models.FileField(upload_to='ecommerce_product_img/', null=True, blank=True)
    url = models.CharField(max_length=200, null=True,blank=True)

class ProductProducer(models.Model):
    name = models.CharField(max_length=200, unique=True)
    slug = models.SlugField(max_length=200, unique=True, null=False, editable=False)
    created_at = models.DateTimeField(editable=False, default=timezone.now)
    updated_at = models.DateTimeField(default=timezone.now)


Я хотел бы проверить, существует ли имя_бренда уже в productProducer_name и если нет, создать новый экземпляр ProductProducer, затем также я хотел бы добавить этот новый (или текущий) productproducer в db_product

Для этого можно воспользоваться функцией Django get_or_create.

producer, is_created = ProductProducer.objects.get_or_create(name=name, defaults={'slug': slug})

Если объект с таким именем уже существовал, он извлекается из БД и сохраняется в переменной producer, а is_created становится False. Если объекта с таким именем еще не было, то создается объект с заданным slug, сохраняется в переменной producer, и is_created становится True.

Вернуться на верх