it-swarm.com.ru

Создание массива JSON в Django

Я пытаюсь сделать массив JSON в Django, но я получаю ошибку -

In order to allow non-dict objects to be serialized set the safe parameter to False

и мои views.py -

def wall_copy(request):
    if True:
        posts = user_post.objects.order_by('id')[:20].reverse()
        return JsonResponse(posts) 

По сути, user_post - это модель, а сообщения - это объект из 20 лучших сохраненных данных. Я хочу отправить массив json, но не могу преобразовать записи в массив json. Я также пробовал сериализаторы, но это не помогло.

Я застрял, помогите мне, пожалуйста.

Заранее спасибо.

14
aquaman

Решит ли это вашу проблему?

from Django.core import serializers
def wall_copy(request):
    posts = user_post.objects.all().order_by('id')[:20].reverse()
    posts_serialized = serializers.serialize('json', posts)
    return JsonResponse(posts_serialized, safe=False) 
31
ger.s.brett

Вы можете решить эту проблему с помощью safe=False:

    def wall_copy(request):
        posts = user_post.objects.all().order_by('id')[:20].reverse()

        return JsonResponse(posts, safe=False)

Обратите внимание, что это не совсем unsafe - вам просто нужно убедиться, что то, что вы пытаетесь вернуть, может быть преобразовано в JSON.

Смотрите JsonResponse docs для справки.

4
Projesh Bhoumik

Попробуйте использовать метод values ​​: http://Django.readthedocs.org/en/1.7.x/ref/models/querysets.html#Django.db.models.query.QuerySet.values ​​ . Это создаст похожее на dict представление для нужных полей объектов.

0
S.Kozlov