在 sebpiq 的帮助下,我能够使用South、natural keys和json dumpdata 修复这个问题。
基本上它只是使用转储的 json进行数据迁移:
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()