我正在开发一个在线表单生成器工具(专门针对保险代理人)。我们希望为客户提供的一件事是默认情况下可以使用常见产品(汽车、家庭、生活等)的预构建表格,但仍可修改。

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

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

最佳答案

在 sebpiq 的帮助下,我能够使用 Southnatural keysjson 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()

关于django - 使用现有数据将数据导入 Django 模型?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5940294/

10-11 02:45
查看更多