使用JSON创建Model对象 - Django

时间:2017-09-11 22:34:19

标签: python json django

我有一个包含JSON的外部网址。

所以我的问题是:如果我创建了与JSON的键匹配的以下模型,如何将JSON数据保存到我的Django管理页面?

from django.db import models

class Person(models.Model):

    name = models.CharField(max_length=254)
    image_url = models.ImageField(blank=True)
    title = models.CharField(max_length=254)
    bio = models.CharField(max_length=20000)
    vote = models.IntegerField()

我的目标是能够创建一个投票应用,让您可以为JSON定义的每个人投票。

以下是此问题的较长版本: https://stackoverflow.com/questions/46149309/create-object-models-from-external-json-link-django

2 个答案:

答案 0 :(得分:1)

如果我正确理解您的问题,您可以使用模型序列化器。

class PersonSerializer(serializers.ModelSerializer):
    class Meta:
        model = Person

然后您可以使用此PersonSerializer使用您从REST API获得的person_json对象(在本例中为json对象数组)填充模型。

personSaver = PersonSerializer(data=person_json, many=True)
if personSaver.is_valid():
    personSaver.save()

答案 1 :(得分:0)

我能够通过运行以下内容来解决这个问题:

import json
from rest_framework.views import APIView
from rest_framework.response import Response
from urllib.request import urlopen
from .models import Person
from .serializers import PersonSerializer


class PersonView(APIView):

    def get(self, request):
        data = urlopen("<JSONURLHERE>").read()
        output = json.loads(data)
        persons = Person.objects.all()
        serializer = PersonSerializer(persons, many=True)
        for person in output:
            if person['id'] not in [i.id for i in persons]:
                Person.objects.create(id=person['id'], name=person['name'], image_url=person['image_url'],
                                          title=person['title'], bio=person['bio'])
        return Response(serializer.data)

我基本上使用JSON创建对象。