Проверка существования чего-либо и добавление или получение объекта из 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.