Django Admin выдает ошибку целостности, когда я устанавливаю UniqueConstraint на модель

Я разрабатываю систему управления библиотекой и хочу избежать дублирования записей, У меня есть следующая модель книги:

class Book(models.Model):
    isbn            = models.CharField(max_length=13, unique=True)
    category        = models.ForeignKey(Category, on_delete=models.CASCADE)
    title           = models.CharField(max_length=200)
    preview         = models.ImageField(upload_to='books/')
    author          = models.ForeignKey(Author, on_delete=models.CASCADE)
    stock           = models.PositiveIntegerField(default=0)
    assigned        = models.PositiveIntegerField(default=0)
    
    class Meta:
        constraints = [ 
                        models.UniqueConstraint(Lower('title'), 'author', name="unique_book_with_author" )
                    ]
    
    def __str__(self) -> str:
        return self.title

Я хочу убедиться, что книга с таким же инказитивным названием и автором существует только один раз, Теперь я хочу, чтобы если пользователь попытается добавить дубликат записи, он получил красивое сообщение об ошибке, эта книга уже существует, но администратор выдает ошибку Integrity как Follow:

enter image description here

Мой класс администратора следующий:

@admin.register(Book)
class BookAdmin(admin.ModelAdmin):
    list_display = ['title', 'author', 'category',  'assigned', 'is_available' ]
    search_fields =  [ 'title', 'author__name__startswith' ]
    
    @admin.display(ordering='is_available', boolean=True)
    def is_available(self, book):
        return book.stock > book.assigned
    
    def get_search_results(self, request, queryset, search_term: str):
        queryset, use_distinct  = super().get_search_results(request, queryset, search_term)
        queryset                = get_int_search_result(queryset, self.model, search_term, 'isbn')
        return queryset, use_distinct

Документы не помогают мне, пожалуйста, подскажите, что мне делать? Потому что когда я использую unique_together в классе Meta (который скоро будет устаревшим, как указано в документации), все работает нормально и django admin выдает хорошее сообщение об ошибке, но когда я использую UniqueConstraint, он выдает ошибку и не обрабатывает ее

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