Добавить отношения перед добавлением их в БД в Django - PullRequest
0 голосов
/ 17 октября 2018

Если у меня есть подобное отношение в django

class Reporter(models.Model):  
    pass

class Article(models.Model):
    reporter = models.ForeignKey(Reporter)

, и я хочу создать новый репортер со статьями сразу, я сначала должен save() Reporter to DB, а затем я могу добавитьстатьи.

Но иногда я хотел бы подготовить все "в автономном режиме" (в смысле, перед тем, как что-либо помещать в БД), например, создать объект Reporter, добавить к нему статьи и, возможно, впоследствии изменитьнекоторые атрибуты объекта Reporter.

Затем, когда все будет сделано, я хочу отправить все вместе в БД.Но, конечно, когда я использую Reporter.article_set.add() перед вызовом Reporter.save(), я получу ошибку, потому что django попытается автоматически добавить статьи и внешние ключи в БД.Есть ли способ предотвратить это и подготовить мой объект, включив в него отношения "офлайн"?

Мой собственный подход заключается в добавлении метода set_articles к Reporter, а затем переопределении метода save()поэтому он проверит, есть ли какие-либо статьи и добавит их после сохранения Reporter

Но прежде чем начать импровизировать, я хотел бы знать, есть ли уже какие-либо решения в django

1 Ответ

0 голосов
/ 17 октября 2018

Метод save() принимает необязательный аргумент ключевого слова commit, который принимает либо True, либо False.Если вы вызовете save() с commit=False, он вернет объект, который еще не был сохранен в базе данных.В этом случае вам нужно вызвать save() в полученном экземпляре модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...