我无法返回查询结果。 所以我正在做的是:
Código(Python):
def filter(request):
if request.method == 'POST':
namepost = request.POST.get('name')
print namepost
result = Player.objects(name=namepost)
print result
# for n in result:
# print n.surname
# jsonString = json.dumps(result)
return HttpResponse(content_type='application/json')
我正在进行查询以获取帖子上的名称,并希望返回结果,但我没有得到...... 结果给出了以下内容:[] Json.dumps尝试了我,但是说:[]不是JSON可序列化的
如何返回查询结果?
答案 0 :(得分:2)
Django模型实例和QuerySets可能不是(json)可序列化的(我从未尝试过)。例如,它如何序列化外键或ManyToMany关系?
我的解决方案是序列化那些相关的属性,例如
jsonString = json.dumps([dict(name=p.name, score=p.score)
for p in Player.objects.filter(name=namepost)
])
(这里只是对你的播放器模型中的字段做一些假设 - 当然要调整到实际的定义)
如果您需要关注参考,您可以按照它们进行操作,例如
jsonString = json.dumps([dict(name=p.name, score=p.score, organization=p.org.name)
for p in Player.objects.filter(name=namepost)
])
或者,您可以在模型上实现serialize()并以递归方式调用它们:
class Organization(models.Model):
def serialize(self):
return dict(name=self.name, address=self.address)
class Player(models.Model):
def serialize(self):
return dict(name=self.name, score=self.score, organization=self.org.serialize())
然后json.dumps序列化的字典:
jsonString = json.dumps([p.serialize() for p in Player.objects.filter(name=namepost)])