РЕДАКТИРОВАТЬ после прочтения других ответов
Исходный ответ, который я дал (здесь ниже, без ограничений), был верным при диагностике проблемы ( аргумент, передаваемый в функцию json, не является списком ).Я оставляю это, поскольку это объясняет процедуру отладки (возможно, некоторого использования для других подобных ситуаций), но новые ответы как @Jacinda, так и @Adam более "к месту".В частности, последний содержит инструкции о том, как использовать встроенную функциональность django для решения проблемы.
Оригинальный ответ
Не уверен на 100%, потому что я не могу воспроизвести проблему в моей системе,но, судя по всему, это проблема в типе / кодировании данных.
Я бы начал с повторного тестирования вашего кода, вручную назначив ids
с:
ids = [335L, 468L, 481L, 542L, 559L, 567L, 609L]
(в моей системе ваш код работает в этом случае).Если это работает и для вас, то выясните, какой тип объекта ids
при назначении через p.values_list('id',flat=True)
[вы можете сделать это с помощью type(ids)
].Возможно, ids
- это объект, представление которого совпадает со списком, но это не список.
В этом случае вы можете попробовать приведение типов: ids = list(p.values_list('id',flat=True))
перед передачей его в jsonфункция, но нет гарантии, что она будет работать (это зависит от того, является ли возвращаемое значение p.values_list
итеративным или нет.
HTH хотя бы для отслеживания проблемы!