не, лучше в pickle все таки.
вот пример кода на консервирование:
# -*- coding: utf-8 -*-
import pickle
from site.prilozhenie.models import *
models={Oblast:'oblast.pickle',
Oblast_raion:'oblast_raion.pickle',
City:'city.pickle',District:'district.pickle',
Street:'street.pickle',Flats:'flats.pickle',
PhotoFlats:'photoflats.pickle',Houses:'houses.pickle',
PhotoHouses:'photohouses.pickle'}
def pickle_to():
for model in models.keys():
fl=open(models[model],'wb')
a=model.objects.all()
pickle.dump(a,fl)
fl.close
Получаем законсервированные экземпляры объектов. Каждый - в отдельном файле.
А вот как расконсервировать?
def pickle_from():
for model in models.keys():
fl=open(models[model],'rb')
from_pickled=pickle.load(fl)
model.objects.all().delete() #перед внесением свежих данных в новую бд удаляем из нее все старые данные
for row in from_pickled:
model.objects.create(field1=from_pickled.field1,
field2=from_pickled.field2,
field3=from_pickled.field3,
field4=from_pickled.field4)
Проблема вот в этом куске:
model.objects.create(field1=from_pickled.field1,
field2=from_pickled.field2,
field3=from_pickled.field3,
field4=from_pickled.field4)
Ведь в каждой модели свои поля. Я могу получить перечень полей с помощью model.__doc__. Но мне получается в параметры objects.create() надо каким-то образом завернуть наименования полей, имеющихся в данной модели и значения этих полей из законсервированного объекта “from_pickled”. Цикл тут не вставишь. Какие могут быть еще варианты?