获取Django模型

时间:2016-06-15 16:23:32

标签: python json django

我们说我有一个Django模型

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

如何获取Book的JSON表示?我可以很容易地写出像

这样的东西
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 个答案:

答案 0 :(得分:2)

这称为序列化。有django本地序列化程序,您可以在文档(https://docs.djangoproject.com/en/1.9/topics/serialization/)中阅读它们,但基本用法是

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

也就是说,Django序列化程序有一些限制,可能会或可能不会给您带来麻烦。

如果您正在使用或考虑使用Django REST Framework,它具有出色,灵活的串行器/解串器架构。还有其他序列化库,您可能想要谷歌。

答案 1 :(得分:1)

是的,有更好的方法,使用内置的Django JSON serializer

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