Объект Django admin уже существует, при использовании функциональных уникальных ограничений Django 4

При создании нового объекта на сайте Django Administration я получаю ошибку "Tag with this already exists.".

Я предполагаю, что это связано с ограничениями, наложенными на модель. Однако создание объекта Tag с помощью кода - например, Tag.objects.create(...) - работает нормально. Это происходит только в админке Django. Есть идеи, почему?

Примечание: Я использую функциональные уникальные ограничения, введенные в Django 4.0 (https://docs.djangoproject.com/en/dev/ref/models/constraints/#django.db.models.UniqueConstraint). Я думаю, стоит ли мне поднимать вопрос об ошибке?

Это моя модель:

class Tag(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, verbose_name=_('user'))
    name = models.CharField(max_length=50, db_index=False, verbose_name=_('name'))
    slug = models.SlugField(max_length=50, verbose_name=_('slug'))

    class Meta:
        ordering = ['name']
        # Create an index to make tags unique per user and also an index on lowercase name to prevent inserting duplicate tags with varying case
        constraints = [models.UniqueConstraint(fields=['user', 'name'], name='unique_tags_per_user'),
                       models.UniqueConstraint(Lower('name'), name='lower_tag_name_idx')]

    def __str__(self):
        return self.name

Это конфигурация администратора:

@admin.register(Tag)
class TagAdmin(admin.ModelAdmin):
    list_display = ('pk', 'user', 'name', 'slug')
    list_display_links = ['pk']
    fields = ('user', 'name', 'slug')
    list_filter = ('user__email',)
    search_fields = ('name',)
    prepopulated_fields = {'slug': ('name',)}
Вернуться на верх