@taaylor

Почему INSERT или UPDATE в таблице product_products нарушает ограничение внешнего ключа product_products_price_id?

class ProductPrice(models.Model):
    price = models.DecimalField(max_digits=8, decimal_places=2, default=0.00)
    date_with = models.DateTimeField(auto_now_add=True)
    date_by = models.DateTimeField()

    class Meta:
        verbose_name = 'цена'
        verbose_name_plural = 'цены'

    def __str__(self) -> str:
        return f'Цена товара:'

class Products(models.Model):
    product = models.CharField(max_length=100, db_index=True)
    slug = models.SlugField(max_length=200, db_index=True)
    description = models.TextField(max_length=500)
    image = models.ImageField(blank=True, null=True, upload_to='products_images/', verbose_name='Изображение')  
    category = models.ForeignKey(to=ProductsCategory, on_delete=models.PROTECT)
    available = models.BooleanField(default=True)
    created = models.DateTimeField(auto_now_add=True, verbose_name='Дата создания')
    size = models.CharField(max_length=30, blank=True, verbose_name='Размер')
    volume = models.PositiveIntegerField(blank=True, verbose_name='Объем', default=0)
    color_product = models.CharField(max_length=30, blank=True)
    price = models.ForeignKey(to=ProductPrice, on_delete=models.DO_NOTHING, to_field=id)
    stock = models.ManyToManyField(
        Stock, 
        through='ProductStock',
        through_fields=('product', 'stock')
        )

    class Meta:
        ordering = ('product',)
        index_together = (('id', 'slug'),)
        verbose_name = 'Продукт'
        verbose_name_plural = 'Продукты'

    def __str__(self) -> str:
        return f'Продукт: {self.product} | {self.category}'
    
    def get_absolute_url(self):
        return reverse('product:product_detail',
                        args=[self.id, self.slug])


Не могу понять в чем проблема. Выдаёт следующую ошибку при миграции:
Running migrations:
  Applying product.0002_auto_20230403_1141...Traceback (most recent call last):
  File "E:\PYTHON_HTML_CSS\course-work_django\course-work_django\nenv\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
psycopg2.errors.ForeignKeyViolation: ОШИБКА:  INSERT или UPDATE в таблице "product_products" нарушает ограничение внешнего ключа "product_products_price_id_0e1fa44e_fk_product_productprice_id"
DETAIL:  Ключ (price_id)=(0) отсутствует в таблице "product_productprice".


The above exception was the direct cause of the following exception:
<code>
Applying product.0002_auto_20230403_1141...Traceback (most recent call last):
  File "E:\PYTHON_HTML_CSS\course-work_django\course-work_django\nenv\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
psycopg2.errors.ForeignKeyViolation: ОШИБКА:  INSERT или UPDATE в таблице "product_products" нарушает ограничение внешнего ключа "product_products_price_id_0e1fa44e_fk_product_productprice_id"
DETAIL:  Ключ (price_id)=(0) отсутствует в таблице "product_productprice".

django.db.utils.IntegrityError: ОШИБКА:  INSERT или UPDATE в таблице "product_products" нарушает ограничение внешнего ключа "product_products_price_id_0e1fa44e_fk_product_productprice_id"
DETAIL:  Ключ (price_id)=(0) отсутствует в таблице "product_productprice".
</code>
  • Вопрос задан
  • 177 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы