我遇到了需要序列化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结果中。
答案 0 :(得分:3)
simplejson.dumps([dict(cow.__dict__) for cow in cows])
怎么样?如果您的Cow
模型只有简单的字符串或整数值,那么这应该有效,否则您需要手动处理更复杂的类型(例如,DateTimeField
需要unicode
- ed for simplejson)。