Ссылка на внешний ключ в Django Python

Как присвоить продукт в ProductInStore экземпляру продукта, который уже есть в магазине? В основном у меня есть скраппер и я перебираю все продукты и мне нужно сначала создать экземпляр Product, а затем экземпляр ProductInStore, который связан с Product через foreignKey. И когда я пытаюсь вставить ProductInStore(product=id), то есть как я хочу ссылаться на этот продукт, я получаю ошибку ValueError: Cannot assign "11393": "ProductInStore.product" должен быть экземпляром "Product". У вас есть идеи, как на него сослаться?

class Product(models.Model):
    name = models.CharField(max_length=200)
    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)
    product_category = models.ManyToManyField(EcommerceProductCategory)
    description = RichTextField(max_length=2000, null=True, blank=True)
    product_producer = models.ForeignKey('ProductProducer', on_delete=models.CASCADE)
    creator = models.ForeignKey('users.CustomUser', on_delete=models.CASCADE, null=True, blank=True, related_name='product_creator')
    points_from_reviews = models.DecimalField(max_digits=6, decimal_places=2, default=0, help_text='Średnia ocena produktu')
    unique_id = models.CharField(max_length=256, unique=True)
    type_of_unique_id = models.CharField(max_length=64)
class ProductInStore(models.Model):
    product = models.ForeignKey('Product', on_delete=models.CASCADE)
    store = models.ForeignKey('Store', on_delete=models.CASCADE)
    price = models.DecimalField(max_digits=6, decimal_places=2, default=0, help_text='Cena w sklepie')
    currency = models.CharField(max_length=4)
    url = models.CharField(max_length=200)
    created_at = models.DateTimeField(editable=False, default=timezone.now)
    updated_at = models.DateTimeField(default=timezone.now)
    # ADD TO DATABASE
                try:
                    db_product = Product.objects.create(name=name, slug=slug, product_producer_id=3, unique_id=id,
                                                description=description)
                    db_product.product_category.set(parsed_categories)
                except:
                    print('product already in database')

                ProductInStore.objects.create(product=,store=1,price=price,currency='PLN',url=url)

Вы можете просто сделать следующее:

ProductInStore.objects.create(product_id=id, store=1, price=price, currency='PLN', url=url)

Вам не нужно передавать объект, если у вас есть его ID, просто добавьте _id к имени поля, и вы сможете ссылаться на внешний ключ таким образом.

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