сохранение данных в Bulk с использованием Django - PullRequest
0 голосов
/ 07 января 2010

У меня есть объекты У ведьмы есть много-много отношения к объекту b. Можно ли сохранить объекты A с его коллекцией B в большом количестве? Я имею в виду не сохранять объекты B один за другим, а затем добавлять их в A.

for b in b_objects :
    A.b_objs.add(b)

A.save()

Спасибо

Ответы [ 2 ]

0 голосов
/ 08 января 2010

Я так не думаю. Отношение ManyToMany реализуется с помощью промежуточной таблицы, которая содержит кортежи (id, a_id, b_id). Следовательно, A должен существовать (см. «Пример использования API»), и каждый B должен иметь id, прежде чем можно будет создать промежуточную строку. Я посмотрел на источник в django.db.models.fields.related и, хотя create_many_related_manager имеет метод с именем _add_items(), кажется, предполагается, что все добавляемые элементы B уже имеют поля id, то есть они должны быть сохранены заранее.

Я не смог найти ничего, что позволило бы эквивалент A.add(bunch_of_Bs_that_havent_been_saved_yet). Вышеупомянутый пример показывает add() несколько B в одном кадре, но все они были сохранены до того, как произойдет add(). К сожалению.

0 голосов
/ 07 января 2010

Вы можете отправить свою модель в JSON (от http://www.djangosnippets.org/snippets/125/):

import sys, os

sys.path.append('/Path/To/Django/Projects/')
os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings'

from django.core.serializers import serialize
from myproject.myapp import models

model_names = [] # a list of the names of the models you want to export

for model_name in model_names:
    cls = getattr(models, model_name)
    filename = model_name.lower() + ".json"
    file = open(filename, "w")
    file.write(serialize("json", cls.objects.all()))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...