[英]Checking if something exists and adding or getting an object from django
我正在取消 Woocommerce 的一家商店,我想获取产品品牌名称,并比较数据库中是否已有这样的名称,如果有,则将其 ID 放入我们的数据库中,如果没有,则创建一个实例产品生产者
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)
我有一个目录,其中包含用于在外部解析类别的映射键和值。
模型看起来像这样:
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)
我想检查 brands_name 是否已经存在于 productProducer_name 中,如果不存在,则创建一个新的 ProductProducer 实例,然后我还想在 db_product 中添加这个新的(或当前的)productproducer
为此,您可以使用 Django 的get_or_create 。
producer, is_created = ProductProducer.objects.get_or_create(name=name, defaults={'slug': slug})
如果已经有同名的 object,它会从数据库中获取并存储在变量producer
中,并且is_created
为 False。 如果还没有同名的 object,则使用给定的 slug 创建一个,存储在变量producer
中,并且is_created
为 True。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.