我正在开发一个在线表单生成器工具(专门针对保险代理人)。我们希望为客户提供的一件事是默认情况下可以使用常见产品(汽车、家庭、生活等)的预构建表格,但仍可修改。
在正常情况下,我会简单地在我的开发环境中创建表单,然后创建一个包含这些表单的夹具,并在所有实时站点上运行 syncdb。不幸的是,这是不可能的,因为我们的一些客户已经创建了表单,这可能与我的装置中的主键冲突。我还希望导出四个不同的相互关联的表,但它们都在我的 sqformbuilder
应用程序中。
有没有办法导出一个fixture,但允许它灵活地插入到另一个正在运行的数据库副本中?
最佳答案
在 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()
关于django - 使用现有数据将数据导入 Django 模型?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5940294/