加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

使用现有数据将数据导入Django模型?

发布时间:2020-12-20 13:23:11 所属栏目:Python 来源:网络整理
导读:我正在开发一个在线表单构建工具(专门用于保险代理商).我们希望为客户提供的一件事就是为普通产品(汽车,家庭,生活等)提供预先构建的表格,默认情况下可用,但仍可修改. 在正常情况下,我只需在我的开发环境中创建表单,然后创建包含这些表单的fixture,并在所有实
我正在开发一个在线表单构建工具(专门用于保险代理商).我们希望为客户提供的一件事就是为普通产品(汽车,家庭,生活等)提供预先构建的表格,默认情况下可用,但仍可修改.

在正常情况下,我只需在我的开发环境中创建表单,然后创建包含这些表单的fixture,并在所有实时站点上运行syncdb.不幸的是,这是不可能的,因为我们的一些客户已经创建了表单,这可能与我的夹具中的主键冲突.我想要导出四个不同的相互关联的表,但它都在我的sqformbuilder应用程序中.

有没有办法导出夹具但是允许它灵活地插入到数据库的另一个运行副本中?

解决方法

在sebpiq的帮助下,我能够使用 South,natural keys和 json dumpdata修复此问题.

基本上它只是使用转储的json的data migration:

datafdir = os.path.dirname(__file__)
dataf = open(os.path.join(datafdir,'0002_mh_quote_form.data.json'),'r')
builtformfieldsjson = simplejson.loads(dataf.read())
form = BuiltForm.objects.get(pk=1)
for field in builtformfieldsjson:
    try:
        builtfield = BuiltFormField.objects.get_by_natural_key(form,field['fields']['fieldname'])
    except:
        builtfield = BuiltFormField(fieldname=field['fields']['fieldname'],builtform=form)
    for part in field['fields']:            
        if part == 'builtform':
            continue
        setattr(builtfield,part,field['fields'][part])
    builtfield.save()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读