2016-03-24 3 views
0

Джанго 1,9 Python3.5Обработка JSON ответ с Джанго

Я использую tastypie потреблять от внешнего API

Я создаю класс для обработки ответа JSon от RESTful API. Я знаю, что типы данных возвращаются из api, но не знают, как объявить некоторые из них.

Это, как я объявляю их в Golang

PosterPath  string `json:"poster_path"` 
    Adult   bool `json:"adult"` 
    Overview   string `json:"overview"` 
    ReleaseDate  string `json:"release_date"` 
    GenreIds   []int `json:"genre_ids"` 
    Id    int  `json:"id"` 
    OriginalTitle string `json:"original_title"` 
    OriginalLanguage string `json:"original_language"` 
    Title   string `json:"title"` 
    BackdropPath  string `json:"backdrop_path"` 
    Popularity  float64 `json:"popularity"` 
    VoteCount  int  `json:"vote_count"` 
    Video   bool `json:"video"` 
    VoteAverage  float64 `json:"vote_average"` 

В моем понимании это, как я должен объявить их DJjango

class Movies(Resource): 
    PosterPath = fields.URLField(attribute='poster_path') 
    Adult = fields.BooleanField(attribute='adult') 
    Overview = fields.CharField(attribute='overview') 
    ReleaseDate = fields.CharField(attribute='release_date') 
    GenreIds = fields.**Array of Ints**(attribute='genre_ids') 
    Id = fields.IntegerField(attribute='id') 
    OriginalTitle = fields.CharField(attribute='original_title') 
    OriginalLanguage = fields.CharField(attribute='original_language') 
    Title = fields.CharField(attribute='title') 
    BackdropPath = fields.URLField(attribute='backdrop_path') 
    Popularity = fields.DecimalField(attribute='popularity') 
    VoteCount = fields.IntegerField(attribute='vote_count') 
    Video = fields.BooleanField(attribute='video') 
    VoteAverage = fields.DecimalField(attribute='vote_average') 

Это поле

GenreIds = fields.**Array of Ints**(attribute='genre_ids') 

Это массив ints. Каков правильный способ обработки json этого типа? Похоже, что это,

"genre_ids": [ 
     18, 
     10402 
     ], 

ответ

1

Существует Postgres конкретных ArrayField в Джанго. Также вы можете преобразовать повторно полученный массив в строку и сохранить его в CommaSeparatedIntegerField, который является агностиком db.

PS: Я считаю, что вы используете модели неправильным образом. Классы полей должны быть доступны через «модели» модуля, но не «fileds» модуль (т.е. models.BooleanField вместо fields.BooleanField)

+0

Я использую tastypie. Я не строю модель. Я использую внешний api для ответа json. Также имеет ли размер массива ArrayField? Нет ли способа сделать ListField? – wuno

+0

Да, ArrayField динамичен. Инициализируйте как список 'times = ArrayField (models.DateTimeField(), default = list)' и добавьте к нему, как обычно. – Ben

Смежные вопросы