2016-06-15 11 views
1

のJSON表現ですが、どのように私はBookのJSON表現を得るのですか?Djangoのモデル

class Book(models.Model): 
    title = models.CharField() 
    author = models.ForeignKey(Author) 
    is_on_loan = models.BooleanField() 

私はDjangoのモデルを持っていると言うなさい私は簡単に何かを書くことができました

import json 

def get_json(self): 
    json_rep = {} 
    json_rep['title'] = self.title 
    json_rep['author'] = self.author.full_name 
    json_rep['is_on_loan'] = self.is_on_loan 
    return json.dumps(json_rep) 

しかし良い方法がありますか?

答えて

2

これは、シリアル化と呼ばれる使用しています。そこジャンゴネイティブシリアライザを使用すると、ドキュメント(https://docs.djangoproject.com/en/1.9/topics/serialization/)でそれらについて読むことができます、ですが、基本的な使い方は、Djangoのシリアライザは、またはあなたのための問題を引き起こしていない場合がありますいくつかの制限があり、言わ

 
from django.core import serializers 
data = serializers.serialize("json", YourModel.objects.all()) 

です。

Django REST Frameworkを使用している、または使用を検討している場合は、優れた柔軟性のあるシリアライザ/デシリアライザアーキテクチャを備えています。あなたのためにGoogleにしたいかもしれない他のシリアライズライブラリがあります。

1

は、はい、より良い方法があり、内蔵のDjango JSON serializer

from django.core import serializers 
json_data = serializers.serialize('json', Book.objects.all())