将json文件导入Django模型

vla*_*lad 11 python django json

我有一个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"
        ], 
    ], 
...
}
Run Code Online (Sandbox Code Playgroud)

还有三种型号:

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)
Run Code Online (Sandbox Code Playgroud)

使用json文件导入数据库的最正确方法是什么?

我应该将json文件转换为fixture文件吗?但是如何处理表之间的关系呢?或者写出view类似的东西更好:

f = open('file.json', 'r')
obj = simplejson.load(f)

for o in obj:
    record = Country(name = o)
    record.save()
Run Code Online (Sandbox Code Playgroud)

但也无法弄清楚如何建立关系models.

或者有更简单的方法吗?

谢谢.

小智 13

使用manage.py导入灯具:

python manage.py loaddata fixture.json
Run Code Online (Sandbox Code Playgroud)


mik*_*725 3

我在 json 中没有看到非常清晰的结构,从某种意义上说,它没有明确定义哪个字段应该进入哪个模型以及所有内容如何相关。因此,我建议只创建一个导入脚本,在其中手动遍历所有 json 并创建正确的模型实例。

我认为结构良好的 json 的一个很好的例子是 Django 序列化的输出。你可以在这里看看。