Save() запрещено [...] из-за несохраненного связанного объекта, но связанный объект уже сохранен

Я работаю с Django 4.0.1.

У меня "save() запрещено для предотвращения потери данных из-за несохранения связанного объекта 'page'" даже если объект 'page' сохранен на одну строку раньше.

Вот код:

# Upload entity data
u = Upload(
    message=request.POST["upload_msg"]
)
# saving u here to be able to use u.datetime later
u.save()
# new page for the upload entity
page = Page(
    title="notes for Upload " + str(u.datetime),
    content="This page is empty..."
)
page.save()
u.page = page
u.save()

Последняя строка (u.save()) является причиной ошибки. Не возникает ли у меня здесь какое-то состояние гонки? Разве не гарантируется, что предыдущие операции с базой данных завершены, прежде чем пытаться выполнить следующие? Есть другие идеи?

Спасибо.

Вы пытаетесь вызвать save(), но не храните его экземпляр в u, используйте commit=False, это не приведет к попаданию в базу данных, а сохранит экземпляр в памяти. после завершения процесса вы можете сохранить его. посмотрите больше информации о методе save().

# Upload entity data
u = Upload(
    message=request.POST["upload_msg"]
)
# saving u here to be able to use u.datetime later
u = u.save(commit=False)
# new page for the upload entity
page = Page(
    title="notes for Upload " + str(u.datetime),
    content="This page is empty..."
)
page.save()
u.page = page
u.save()
Вернуться на верх