推荐一个自己写的快速序列化Django QuerySet或者 Django model object的包:
django-simple-serializer
为什么要做django simple serializer?
在django中,目前主要的序列化方法主要有以下三种:
django.core.serializers:
这是django内建的序列器,它可以很好的序列化QuerySet,但当他遇到单独的django model object时就会报错,并且它序列化出的model中如果包含DateTimeField时,输出数据中的时间是个datetime对象,无法直接当作序列化数据使用。
QuerySet.values()
和上面一样,它生成的list/dict时的model中如果包含DateTimeField时,输出数据中的时间是个datetime对象,无法直接当作序列化数据使用。
django-rest-framework serializers
django-rest-framework 是一个帮助用户快速构建REST API的强大工具。同时,他的序列器也非常强大,但是想用他的序列器你不得不为相应的model指定相应的model serializer。在某些时候我们只是想单纯的快速取得序列数据,而django-simple-serializer正好解决了这个问题。
django simple serializer
快速取得序列化数据,拥有多种输出格式,字符串化时间,没有任何额外配置与操作。
安装:
pip install django-simple-serializer
使用:
假设我们现在拥有如下几个models:
class Classification(models.Model):
c_name = models.CharField(max_length=30, unique=True)
class Article(models.Model):
caption = models.CharField(max_length=50)
classification = models.ForeignKey(Classification, related_name='cls_art')
content = models.TextField()
publish = models.BooleanField(default=False)
一个简单的例子:
from dss.Serializer import serializer
article_list = Article.objects.all()
data = serializer(article_list)
data:
[{'read_count': 0, 'create_time': 1432392456.0, 'modify_time': 1432392456.0, 'sub_caption': u'first', 'comment_count': 0, u'id': 31}, {'read_count': 0, 'create_time': 1432392499.0, 'modify_time': 1432392499.0, 'sub_caption': u'second', 'comment_count': 0, u'id': 32}]
详细使用及API:
django-simple-serializer
BUG:
在序列化QuerySet、Page、list输出成xml时会报muti root 错误,我正在找一个更好的解决办法修复。也欢迎大家提意见~
PS:求问一个关于测试的问题,怎么模拟产生Django QuerySet数据?望高手解答,小弟感激不尽