JSON для моделирования класса с использованием Django - PullRequest
8 голосов
/ 11 октября 2011

Я пытаюсь получить объект JSON, например:

{
    "username": "clelio",
    "name": "Clelio de Paula",
}

и преобразовать его в:

  class User(models.Model):

     name = models.CharField(max_length=30)
     username = models.CharField(max_length=20)

     def jsonToClass(s):

       aux = json.dumps(s, self)

       self.name = aux['name']
       self.id = aux['id']

Поэтому я попытался использовать simplejson и один метод с именем jsonToClass():

  >>> import simplejson as json
  >>> u1 = User()
  >>> u1.jsonToClass(face)
  >>> u1.save()

Это не работает. Какой самый простой способ сделать то, что я хочу?

Ответы [ 3 ]

10 голосов
/ 11 октября 2011

Возможно, вы захотите взглянуть на (de) платформу сериализации Django .Учитывая JSON, как:

[
  {
    "model": "myapp.user",
    "pk": "89900",
    "fields": {
      "name": "Clelio de Paula"
    }
  }
]

, вы можете сохранить его следующим образом:

from django.core import serializers
for deserialized_object in serializers.deserialize("json", data):
    deserialized_object.save()

Обратите внимание, что я считаю, что вы должны использовать формат сериализации Django, чтобы использовать этот метод, так что вы можете иметьсоответственно настроить JSON.

4 голосов
/ 12 октября 2011

Я только что понял, что

{
    "username": "clelio",
    "name": "Clelio de Paula",
 }

является объектом dict ().

Итак, это проще, чем я думал.

То, что мне нужно решить, это просто

def jsonToClass(self, aux):

    self.name = aux['name']
    self.username = aux['username']

Вот и все.

0 голосов
/ 09 октября 2018

Это просто достигается следующим образом:

data = {
   "username": "stackExchange",
   "name": "stack overflow"
}

for obj in serializers.deserialize("json", data):
    do_something_with(obj)

Подробнее см. Django docs

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...