Дублирующая запись '1' для ForeignKey в тестировании Django - PullRequest
1 голос
/ 14 января 2020

Я реализую интеграционный тест в Selenium для Django

У меня есть модель пример , например:

class Product(models.Model):
    id = models.AutoField(max_length=11, primary_key=True)
    contract_id = models.IntegerField(blank=True, null=True)
    name= models.CharField(max_length=255, blank=True, null=True)
    productType= models.OneToOneField(
        ProductType,
        on_delete=models.CASCADE,
        db_column='product_type_id'
    )
    productGroup = models.ForeignKey(
        productGroup,
        on_delete=models.CASCADE,
        related_name="ProductGroup",
        db_column='product_group_id'
    )

    class Meta:
        db_table = 'PRODUCT'

Когда я вставляю новый поле для моего продукта, я получил ошибку, как это. Проблема в том, что когда я впервые вставляю или создаю новый продукт, он все еще работает хорошо. Но во второй раз возникает ошибка

"Duplicate entry '3' for key 'product_type_id'"

Я думаю, потому что в таблице PRODUCT_TYPE есть ограничение product_type_id, но вставляемое значение имеет дубликат. Но можно ли исправить ошибки, связанные с ForeignKey?

1 Ответ

1 голос
/ 14 января 2020

Это из-за OneToOneField, когда вы впервые добавляете продукт с ProductType (скажем, X), он будет работать нормально. Если вы добавите новый Product с ProductType X, он встретится с дубликатом (OneToOneField позволяет сопоставить один продукт только 1 ProductType)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...