如何在Django中序列化RawQuerySet?

时间:2011-04-23 13:12:02

标签: python django json serialization

我遇到了需要序列化RawQuerySet的问题。它没有值函数。我还为每个对象添加了一个十进制注释,这是一个字段的计数。

示例代码:

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)

序列化它的最佳方法是什么。 我希望使用注释序列化cow对象属性。最简单的可能只是将所有内容转换为字典和列表等,而不是调用simplejson.dumps,但这可能不是最有效的吗?

更新: 只是尝试使用http://docs.djangoproject.com/en/dev/topics/serialization/#id2,但这不会将百分比添加到json结果中。

1 个答案:

答案 0 :(得分:3)

simplejson.dumps([dict(cow.__dict__) for cow in cows])怎么样?如果您的Cow模型只有简单的字符串或整数值,那么这应该有效,否则您需要手动处理更复杂的类型(例如,DateTimeField需要unicode - ed for simplejson)。