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()