将json添加到新的Django数据库

时间:2014-11-26 05:16:02

标签: python json django

我正在尝试在Django中创建一个数据库,数据存储在json中。

 {
   'Vincent van Gogh': 
       {'The Starry Night': ['starryLink'], 
        'Irises': ['irisesLink']}, 
   'Leonardo da Vinci': 
       {'Mona Lisa': ['monalisalink'], 
        'The Last Supper': ['lastsupperlink']},
 }

我是否需要将上述json重写为以下格式?

[
{
    "model": "model.artistModel",
    "pk": 1,
    "fields": {
        "artist": "Vincent van Gogh",
        "title": "The Starry Night",
        "link": ["link.com"]
    }
},

我看到了一些从json创建Django数据库的例子,但没有一个看起来像我的json文件。我是否必须将我的数据编入带有循环等的数据库中,或者Django可以自动执行此操作吗?

2 个答案:

答案 0 :(得分:0)

有包Django Json Field。它支持Python 3和Django 1.7。 例如:

from django.db import models
from jsonfield import JSONField

class MyModel(models.Model):
  json = JSONField()

答案 1 :(得分:0)

要回答我自己的问题,我必须重写我的json文件以符合Django模型。我在models.py中创建了我的模型,看起来像

class Art(models.Model):
    title = models.CharField()
    artist = models.CharField()
    link = models.URLField()

    def __unicode__(self):
        return u'%s, %s, %s' % (self.title, self.artist, self.link)

我去了/ admin /面板,点击Art模型,输入数据并保存。然后我跑了

python manage.py dumpdata mydata.json

查看数据库将推出什么。它推出的json采用这种格式

[
{
     "pk": 1,  
     "model": "model.artistModel",
     "fields": {
         "artist": "Vincent van Gogh",
         "title": "The Starry Night",
         "link": "link.com"
     }
},

所以我重新安排了我的json文件,使其具有相同的结构,放入我的django / fixtures文件夹然后运行

python manage.py loaddata myfixture.json

和魔术一样Django用我的所有数据填充数据库。