Django: Я получаю "ValueError: необходимо иметь значение для поля "id", прежде чем это отношение "многие-ко-многим" может быть использовано".

Я пытаюсь написать функцию record_post, которая сохраняет Post со следующей моделью:

class Post(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    body = models.CharField(max_length=1000)
    date_created = models.DateTimeField()
    platforms = models.ManyToManyField(Platform)

А вот функция record_post:

def record_post(user, body=None, platforms=None):
    post = Post(
        user=user,
        body=body,
        date_created=timezone.now(),
    )

    # Add platforms
    facebook = Platform.objects.get(name="Facebook")

    if "facebook" in platforms:
        post.platforms.add(facebook)

    post.save()

    return post

Однако, когда я запускаю функцию, я получаю следующую ошибку: ValueError: "<Post: 53>" needs to have a value for field "id" before this many-to-many relationship can be used.

Мне удалось исправить это, переместив post.save() после инициализации Post. Таким образом, полная функция теперь выглядит так:

def record_post(user, body=None, platforms=None):
        post = Post(
            user=user,
            body=body,
            date_created=timezone.now(),
        )

        post.save() # MOVED LINE

        # Add platforms
        facebook = Platform.objects.get(name="Facebook")

        if "facebook" in platforms:
            post.platforms.add(facebook)

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