Должно ли get_or_create() сэкономить сразу? (Джанго)
Мне нужно использовать что-то вроде get_or_create(), но проблема в том, что у меня много полей, и я не хочу устанавливать значения по умолчанию (что не имеет смысла в любом случае), и если я не задаю значения по умолчанию он возвращает ошибку, потому что он сохраняет объект сразу.
Я могу установить поля в null = True, но я не хочу нулевые поля.
Есть ли какой-либо другой метод или какой-либо дополнительный параметр, который может быть отправлен в get_or_create(), чтобы он создавал экземпляр объекта, но не сохраняет его, пока я не вызову save() на нем?
Спасибо.
Ответы
Ответ 1
Вы можете просто сделать:
try:
obj = Model.objects.get(**kwargs)
except Model.DoesNotExist:
obj = Model(**dict((k,v) for (k,v) in kwargs.items() if '__' not in k))
что в значительной степени означает get_or_create
, sans commit.