2013-09-25 2 views
1

Я не могу вернуть результат запроса. Так это то, что я делаю:Возвращаемый результат запроса

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 сериализации

Как вернуть результат запроса?

ответ

2

Примеры экземпляров Django и QuerySets, вероятно, не (json) serializable (я никогда не пробовал). Например, как бы он сериализовал внешний ключ или отношение 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 сериализированную Dict:

jsonString = json.dumps([p.serialize() for p in Player.objects.filter(name=namepost)]) 
+0

Да, именно так. Я уже пробовал что-то подобное, поэтому я могу отправить данные, например, имя, фамилию, возраст ... Проблема в том, что у меня есть данные, которые ссылаются на другую коллекцию, как если бы это был внешний ключ, ai дает error (<Страна: объект Country> не является сериализуемым JSON). В этом случае уже не знаю, можно ли это сделать, и мне действительно нужны все данные. С tastypie я отправляю все сейчас, делая запрос и доставку, не знаю, дает ли он ... – Helio

Смежные вопросы