所以我有一个JSON文件,我想迭代它并使用Django显示信息。我该怎么做,是否需要像正常一样设置模型?如何使用SQLite将此数据传输到数据库模型?
我在类似的stackoverflow问题上发现了这个代码,但我不知道如何通过HTTPResponse显示数据,以便用户可以查看数据:
import json
json_data = open('/static/prices.json')
data1 = json.load(json_data) // deserialises it
data2 = json.dumps(json_data) // json formatted string
json_data.close()
答案 0 :(得分:1)
Django提供了loaddata
命令来转移'从json | xml | ..到Model的数据。
要使用loaddata
,请将文件prices.json
移至yourapp/fixtures
并重新格式化:
[{
"model": "yourapp.yourmodel",
"pk": 1,
"fields": {
"name": "Item A",
"price": 1
}
}, {
"model": "yourapp.yourmodel",
"pk": 2,
"fields": {
"name": "Item B",
"price": 2
}
}]
然后运行命令python manage.py loaddata prices
如果您不想更改文件格式,请创建空迁移
python manage.py makemigrations yourapp --empty
在新的迁移文件中,添加insert_price
,如下所示:
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import json
from django.db import models, migrations
from yourapp.models import Model
def insert_price(apps, schema_editor):
with open('/path/to/prices.json') as data_file:
data = json.load(data_file)
for item in data:
# Update, map field for item to make it match with Model
# item['description'] = 'Just kidding'
Model.objects.create(**item)
class Migration(migrations.Migration):
dependencies = [
('yourapp', '000_previous_depends'),
]
operations = [
migrations.RunPython(insert_price),
]
最后,应用迁移python manage.py migrate