2017-09-11 1 views
0

Ich habe eine externe URL, die JSON enthält.Verwenden Sie JSON, um Modellobjekte zu erstellen - Django

Meine Frage ist also: Wie speichere ich die JSON-Daten auf meiner Django-Admin-Seite, wenn ich das folgende Modell erstellt habe, das den Schlüsseln des JSON entspricht?

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() 

Mein Ziel ist es, eine Abstimmung App erstellen, die Sie für jede einzelne Person, die von der JSON definiert läßt stimmen. Hier

ist die längere Version dieser Frage: https://stackoverflow.com/questions/46149309/create-object-models-from-external-json-link-django

Antwort

0

Wenn ich Ihre Frage richtig verstanden können Sie Modell Serializer für diesen Zweck verwendet werden.

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

Und dann können Sie diese PersonSerializer verwenden Sie das Modell mit person_json Objekten zu füllen (in diesem Fall in einer Reihe von JSON-Objekten), die Sie aus der REST-API erhalten.

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

Ich werde dies versuchen, und lassen Sie es wissen. Ich versuche, Objekte aus einer JSON-Datei zu erstellen, damit ich sie in meinen HTML-Code einfügen kann. Außerdem möchte ich in der Lage sein, die Objekte zu sehen, die basierend auf diesem JSON auf meiner Admin-Seite erstellt wurden. – Anthony

0

Ich konnte es mit dem folgenden, um herauszufinden:

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) 

Wo ich im Grunde Objekten der JSON mit der Erstellung bin.

Verwandte Themen