У меня есть много объектов для сохранения в базе данных, и поэтому я хочу создавать экземпляры модели с
С помощью django я могу создать все экземпляры моделей с помощью MyModel (data)
, а затем хочу сохранить их все.
В настоящее время у меня есть что-то подобное:
for item in items:
object = MyModel(name=item.name)
object.save()
Мне интересно, могу ли я сохранить список объектов напрямую, например:
objects = []
for item in items:
objects.append(MyModel(name=item.name))
objects.save_all()
Как сохранить все объекты в одной транзакции?
для однострочной реализации вы можете использовать лямбда-выражение в карте
map(lambda x:MyModel.objects.get_or_create(name=x), items)
Здесь лямбда сопоставляет каждый элемент в списке элементов с x и при необходимости создает запись в базе данных.
Проще всего использовать метод create
Manager, который создает и сохраняет объект за один шаг.
for item in items:
MyModel.objects.create(name=item.name)