Django: Поле 'object_id' ожидало число, но получило 'fe2b1fd4313c'

Я получаю эту ошибку при попытке сохранить модель из раздела администратора с помощью Django admin, вот ошибка Field 'object_id' expected a number but got 'id_b2cbfe2b1fd4313c'.. Я использую django shortuuid пакет https://pypi.org/project/shortuuid/ для создания id поля в django, и я решил использовать его, потому что поле inbuild UUID продолжает выдавать эту ошибку Django UUIDField shows 'badly formed hexadecimal UUID string' error? и id выглядит так id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=True). В чем может быть проблема с коротким полем uuid.

Основываясь на этом, цитирую:

Если вы фильтруете по ForeignKey, то Django будет фильтровать по первичному ключу целевого объекта, а это обычно AutoField, если вы не ссылаетесь на другой (уникальный) столбец или не определили другой первичный ключ как поле.

Но я не знаю, в чем может быть проблема сейчас

Models.py

class Channel(models.Model):
    id = ShortUUIDField( length=16, max_length=40, prefix="id_", alphabet="abcdefg1234", primary_key=True,)
    full_name = models.CharField(max_length=200) 
    user = models.OneToOneField(User, on_delete=models.SET_NULL, null=True, related_name="channel")

Views.py

def channel_profile(request, channel_name):
    channel = Channel.objects.get(id=channel_name, status="active")
    context = {
        "channel": channel,
    }
    return render(request, "channel/channel.html", context)

Ваша база данных не синхронизирована с файлом миграций, потому что вашу проблему легко решить, Django ожидает ID (интегратор), а вы передаете строку.

Если вы не перевели проект в продакшн, вы можете удалить папку миграции и мигрировать снова, в противном случае вам нужно обновить файлы миграции, чтобы изменить тип для поля UD

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