我有一个json格式的文件,结构是这样的?
{
"Admiralty Islands": [
[
"Up to 1 kg",
"5.00"
],
[
"1 - 10 kg",
"10.00"
],
],
"Afghanistan": [
[
"Up to 1 kg",
"15.00"
],
[
"1 - 10 kg",
"20.00"
],
],
...
}
以及三种型号:
class Country(models.Model):
name = models.CharField(max_length=128, unique=True)
class Weight(models.Model):
name = models.CharField(max_length=128, unique=True)
min_weight = models.IntegerField()
max_weight = models.IntegerField()
class Shipping(models.Model):
country = models.ForeignKey(Country)
weight = models.ForeignKey(Weight)
price = models.DecimalField(max_digits=7, decimal_places=2)
使用json文件导入数据库的最佳方法是什么?
我应该把json文件转换成fixture文件吗?如果是的话,我该如何处理表之间的关系?
或者最好将view
写成:
f = open('file.json', 'r')
obj = simplejson.load(f)
for o in obj:
record = Country(name = o)
record.save()
但是我也不知道如何建立models
之间的关系。
或者有更简单的方法?
谢谢。
4条答案
按热度按时间ma8fv8wu1#
使用manage.py导入装置:
g52tjvyc2#
我没有看到你的json有一个非常清晰的结构,在某种意义上,它没有明确定义哪个字段应该进入哪个模型,以及所有的东西是如何关联的,所以我建议只创建一个导入脚本,在这个脚本中,它手动地遍历所有的json并创建适当的模型示例。
在我看来,一个结构良好的json的好例子是Django序列化的输出,你可以看看here。
ztyzrc3y3#
json
中要填充到数据库的数据:woobm2wo4#
Django已经有了很大的发展,在Django2.x下,可能最好的方法是使用Django内置的serializers(如@miki725所提到的)和数据迁移,这将允许在运行迁移时加载数据(包括在运行单元测试之前运行迁移)。