返回查询结果
问题描述:
我无法返回查询结果。 所以这是我在做什么是:返回查询结果
Código(蟒蛇):
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可序列化
如何返回查询结果?
答
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)
])
或者,你可以实现你的车型序列化()和调用这些递归:
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)])
是的,正好。我已经尝试过类似的东西,所以我可以发送数据,例如姓名,年龄... 问题是,当我有数据引用另一个集合,就像它是一个外键,AI给错误(不是JSON可序列化的)。 在这种情况下,案件已经不知道是否可以做到这一点,我真的需要所有的数据。 随着tastypie,我现在发送一切,从而使查询和运输不知道它是否给... –
Helio