Уникальность вместе вызывает IntegrityError

Django==4.1

Я задал ограничение уникальности вместе. Затем я пытаюсь проверить, действительно ли оно работает. Но у меня возникает IntegrityError.

Я надеялся, что уникальное ограничение together вызовет ValidationError. Но этого не произошло.

Могли бы вы помочь мне понять, не ошибаюсь ли я в своем предположении о ValidationError в данном случае. И как справиться с этой проблемой (какой метод переопределить и как)?

Модель

class Task(PriorityMixin,
           CommentMixin, ):
    # n-fipi
    cypher = models.CharField(
        max_length=255,
        null=False,
        default="",
    )

    fipi_section = models.ForeignKey("fipi_site_sections.FipiSection",
                                     on_delete=models.CASCADE,
                                     null=False,
                                     blank=False)

    page = models.PositiveIntegerField(null=False,
                                       blank=False,
                                       default=0)

    task_description = models.ForeignKey("fipi_task_descriptions.TaskDescription",
                                         on_delete=models.CASCADE,
                                         null=False,
                                         blank=False)

    def __str__(self):
        return self.cypher

    class Meta:
        ordering = ['fipi_section', 'page', 'priority', ]

        constraints = [
            models.UniqueConstraint(fields=['fipi_section', 'page', 'priority', ],
                                    name='fipi_section-page-priority')
        ]

Traceback

Вместо models.UniqueConstraint используйте unique_together как :

class Meta:
    unique_together = ('fipi_section', 'page', 'priority')

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

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