У меня есть куча объектов в объекте ответа, которые я сохраняю в базе данных. Выполнение этого объекта за объектом очень медленно, поскольку это, по сути, означает, что если его 30 000 объектов, он сделает 30 000 коммитов в базу данных, на самом деле.
Пример 1:
for obj in response['RESULTS']:
_city = City.objects.create(
id=obj['id'],
name=obj['name'],
shortname=obj['shortname'],
location=obj['location'],
region=region_fk
)
_events = Event.objects.get(pk=obj['Event'])
_events.city_set.add(_city)
Мой новый подход к реализации bulk_create()
выглядит примерно так:
Пример 2:
bulk_list = []
for obj in response['RESULTS']:
# get the foreignkey instead of duplicating data
if obj.get('Region'):
region_fk = Region.objects.get(pk=obj['Region'])
bulk_list.append(
City(
id=obj['id'],
name=obj['name'],
shortname=obj['shortname'],
location=obj['location'],
region=region_fk
)
)
bulk_save = City.objects.bulk_create(bulk_list)
Хотя это намного быстрее, чем моя предыдущая попытка, у нее есть проблема, теперь я не знаю, как добавить свои отношения M2M.
модели.py
class City(models.Model):
id = models.CharField(primary_key=True, max_length=64)
name = models.CharField(max_length=32)
shortname = models.CharField(max_length=32)
location = models.CharField(max_length=32)
region = models.ForeignKey(max_length=32)
events = models.ManyToManyField(Event)
class Event(models.Model):
id = models.CharField(primary_key=True, max_length=64)
description = models.TextField()
date = models.DateTimeField()
class Region(models.Model):
id = models.IntegerField(primary_key=True)
Вопросы
Я просмотрел stackoverflow и нашел несколько примеров, но я не понимаю их полностью. Кажется, что в большинстве ответов говорится о массовом_создании отношений M2M также с помощью модели through
, и я не уверен, что это то, что я ищу.
- Как я могу добавить эти отношения M2M?
- Пожалуйста, разбейте это, чтобы я мог понять, я хочу учиться :-)
Любая помощь или указатели высоко ценятся. Спасибо.
Другая информация
Я бегу:
- postgresql
- Джанго == 1.11
Похожие сообщения
- Django устанавливает объект many_to_many при выполнении bulk_create а>
- Django `bulk_create` со связанными объектами
Документы Django по этой теме
Пример ответа:
"RESULT": [
{
"City": [
{
"id": "349bc6ab-1c82-46b9-889e-2cc534d5717e",
"name": "Stockholm",
"shortname": "Sthlm",
"location": "Sweden",
"region": [
2
],
"events": [
{
"id": "989b6563-97d2-4b7d-83a2-03c9cc774c21",
"description": "some text",
"date": "2017-06-19T00:00:00"
},
{
"id": "70613514-e569-4af4-b770-a7bc9037ddc2",
"description": "some text",
"date": "2017-06-20T00:00:00"
},
{
"id": "7533c16b-3b3a-4b81-9d1b-af528ec6e52b",
"description": "some text",
"date": "2017-06-22T00:00:00"
},
}
}
]
models.py
для завершения. Спасибо - person sphrak   schedule 19.06.2017