【问题标题】:Adding json to new Django database将 json 添加到新的 Django 数据库
【发布时间】:2015-01-24 08:23:53
【问题描述】:

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

 {
   '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 可以自动执行吗?

【问题讨论】:

  • 你说的是 Django 还是 Django Rest Framework?
  • 只是基本的 Django 应用程序。我还没有了解 Django Rest 是什么。我只是想用存储在 json 中的数据创建一个新的 Django 数据库

标签: python json django


【解决方案1】:

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

from django.db import models
from jsonfield import JSONField

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

【讨论】:

  • 我不需要保持我的 json 文件完好无损。我只想获取数据并从中创建一个 mysql 数据库以进行查询。
  • @edmund_spenser 您是否在谈论 json 文件,例如一些您将从中创建数据库的初始数据?没有在应用中创建模型?
  • 没错,我什至不需要模型。我想建立一个数据库,然后在 Django 中使用它。
  • 我认为您仍然需要为要加载到数据库中的数据创建模型。例如模型 - Painter 用于示例中的数据。然后像本教程中一样使用 initial.json - docs.djangoproject.com/en/1.7/howto/initial-data
【解决方案2】:

要回答我自己的问题,我必须重写我的 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 用我所有的数据填充数据库。

【讨论】:

    猜你喜欢
    • 2020-10-25
    • 1970-01-01
    • 2014-02-21
    • 1970-01-01
    • 2016-03-09
    • 1970-01-01
    • 2017-07-14
    • 2012-07-08
    • 1970-01-01
    相关资源
    最近更新 更多