"django.core.exceptions.ValidationError: [''post_id'' не является действительным UUID.']" с вроде бы действительным UUID

Это простое приложение для блога, которое я создаю. У меня есть модель, которая создает статью и генерирует UUID для каждой созданной статьи. Все работает так, как ожидалось.

Я сейчас пытаюсь создать переменную представления, содержащую объект "post_id" из моей модели "Post", чтобы потом вставить эту переменную в мой html-шаблон. Смущает то, что я знаю, что модель Post генерирует правильный UUID (по крайней мере, в моем понимании UUID), поскольку я видел, как он генерируется, поэтому я не знаю, с чего начать поиск решения этой проблемы. Другие похожие проблемы в Интернете, похоже, не связаны с моей проблемой.

myapp/views.py

from django.shortcuts import render
from django.utils import timezone
from .models import Post

def blog_list(request):
    posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
    post_uid = Post.objects.get(pk="post_id")

    context = {
        "post_uid": post_uid,
        "posts": posts
            }

    return render(request, 'blog/blog_list.html', context)


def article(request, post_id):
    current_article = Post.objects.get(pk=post_id)
    return render(request, 'blog/article.html', {'current_article':current_article})

myapp/model.py

from django.db import models
from django.conf import settings
from django.utils import timezone
import uuid


class Post(models.Model):
    author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    title = models.CharField(max_length=200)
    text = models.TextField()
    created_date = models.DateTimeField(default=timezone.now)
    published_date = models.DateTimeField(blank=True, null=True)
    post_id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)

    def publish(self):
        self.published_date = timezone.now()
        self.save()

    def __str__(self):
        return self.title

Возвращаемые ошибки

Также, если это ценно - последний файл миграции с того момента, когда был добавлен объект post_id.

myapp/migrations/0002_auto_20210830_1450.py

from django.db import migrations, models
import uuid

def create_uuid(apps, schema_editor):
    Post = apps.get_model('blog', 'Post')
    for x in Post.objects.all():
        x.post_id = uuid.uuid4()
        x.save()


class Migration(migrations.Migration):

    dependencies = [
        ('blog', '0001_initial'),
    ]

    operations = [
        migrations.RemoveField(
            model_name='post',
            name='id',
        ),
        migrations.AddField(
            model_name='post',
            name='post_id',
            field=models.UUIDField(blank=True, null=True),
        ),
        migrations.RunPython(create_uuid),
        migrations.AlterField(
            model_name='post',
            name='post_id',
            field=models.UUIDField(default=uuid.uuid4, unique=True)
        )
    ]

Ваш запрос выглядит неправильно. Вы использовали кавычки вокруг post_id

post_uid = Post.objects.get(pk="post_id")

попробуйте это вместо вышеприведенного без кавычек:

post_uid = Post.objects.get(pk=post_id)

Также в вашем методе blog_list отсутствует параметр post_id. Вам необходимо передать параметр post_id в этот метод.

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