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