django / json - исключительная стоимость,не является JSON-сериализуемым - PullRequest
0 голосов
/ 18 июня 2011

Я работаю над функцией в views.py, которая будет использоваться для запроса ajax, который выглядит следующим образом:

def myfunction(request):
            ...
            p = M1.objects.filter(user=request.user)            
            n = M2.objects.filter(myrecord=p)           
            results["res1"] = list(p)
            results["res2"] =  list(q)

    return HttpResponse(json.dumps(results), mimetype='application/javascript')

Когда я вызываю myfunction с использованием ajax, я получаю сообщение об ошибке, подобноеэто:

Значение исключения:

<M1: test1 test1 2011-06-17 2011-06-17> is not JSON serializable

Есть идеи как это исправить?

1 Ответ

4 голосов
/ 18 июня 2011

Это потому, что модуль json по умолчанию сериализует только собственные типы данных, вы должны указать ему, как сериализовать произвольные объекты.Django имеет встроенную поддержку для сериализации наборов запросов и объектов , или вы можете написать свой собственный сериализатор:

from django.core import serializers
json_serializer = serializers.get_serializer("json")()
json_serializer.serialize(queryset)
...