如何在Django中序列化RawQuerySet?

4 投票
1 回答
5187 浏览
提问于 2025-04-16 16:17

我遇到了一个问题,我需要把一个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正常工作。

撰写回答