如何在Django中序列化RawQuerySet?
我遇到了一个问题,我需要把一个RawQuerySet序列化。这个东西没有values这个功能。我还给每个对象添加了一个小数的注解,表示某个字段的计数。
示例代码:
cow_query = """SELECT cow.* (count(leg.id) / 4) as 'percentage' FROM cow JOIN leg ON leg.cow_id = cow.id;"""
cows = Cow.objects.raw(cow_query)
json = simplejson.dumps(cows) # this will not work
return HttpRepsonse(json)
我想知道最好的序列化方法是什么。我希望把牛对象的属性和注解一起序列化。最简单的方法可能就是把所有东西转换成字典和列表,然后调用simplejson.dumps,但这样可能效率不是最高的。
更新:刚试着用这个链接,但是这样做并没有把百分比加到json结果里。
1 个回答
5
你可以试试这个代码:simplejson.dumps([dict(cow.__dict__) for cow in cows])
。如果你的Cow
模型里面只包含简单的字符串或者整数,这个方法应该没问题。不过,如果里面有更复杂的数据类型,比如DateTimeField
,你就需要手动处理一下,把它们转换成unicode
格式,才能让simplejson
正常工作。