繁体   English   中英

检查是否存在并从 django 添加或获取 object

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM