lec*_*hup 11 django django-south
我在导入旧数据时遇到问题,而不是我当前的模型架构.我使用的流程导致错误:
Run Code Online (Sandbox Code Playgroud)File "/usr/local/lib/python2.6/dist-packages/django/db/backends/postgresql_psycopg2/base.py",第44行,在执行中返回self.cursor.execute(query,args)DatabaseError:关系"localization_province"的列"mpoly"不存在第1行:... e"("id","name","slug" ,"mpoly")V ...
如果我想加载数据,有没有办法避免在向后迁移后使用模型?
也许我错过了一些非常明显的东西......
PS:我使用South 7.3,Django 1.2.3和PostgreSQL 8.4作为数据库后端.
CJ *_*net 10
亚历克斯·维达尔(Alex Vidal)提出了一个很好的快速解决方案 它需要Gary Bernhardt的Dingus图书馆.一旦我们有时间,我们就会将Dingus依赖关系分解出来并向South提交拉取请求,但如果你现在处于绑定状态,这可能会让你失去它:
from dingus import patch
def loaddata(orm, fixture_name):
_get_model = lambda model_identifier: orm[model_identifier]
with patch('django.core.serializers.python._get_model', _get_model):
from django.core.management import call_command
call_command("loaddata", fixture_name)
Run Code Online (Sandbox Code Playgroud)
用法:
from apps.common.utils import loaddata
class Migration(DataMigration):
def forwards(self, orm):
loaddata(orm, "initial_fjords.json")
Run Code Online (Sandbox Code Playgroud)
到目前为止,我们只在Django 1.3中进行了测试.编辑:我检查了Django的_get_model历史,这应该适用于Django 0.95及以上.
| 归档时间: |
|
| 查看次数: |
3869 次 |
| 最近记录: |