svfat
@svfat
☺Нужен VPS? Два месяца бесплатно. Смотри профиль☺

Как пользоваться JSONResponse?

В приложении на Django надо получать данные из одной модели в виде JSON. Можно конечно прикрутить django-rest-framework (с ним опыт есть), но так как полноценный REST API не нужен, хочется сделать используя только средства джанги.

Я использую CBV, потому решил прикрутить JSONResponseMixin из мануала к моему DetailView. Тупо скопипастил. В итоге: TypeError: блабла is not JSON serializable. Подозреваю что из-за ForeignKey которые есть в модели.

Узрел в копипасте:
# Note: This is *EXTREMELY* naive; in reality, you'll need
        # to do much more complex handling to ensure that arbitrary
        # objects -- such as Django model instances or querysets
        # -- can be serialized as JSON.


Что нужно сделать чтобы корректно сериализовать модель?
  • Вопрос задан
  • 1527 просмотров
Решения вопроса 1
@korotkin
Заведите список полей и отдавайте нужные
Сериализатор в DRF как раз и итерирует по описанным полям
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@dovgalmichael
Я еще новичек совсем,но для своей модели делаю как-то так
#модель
class CustomModel(model):
    #some fields
   def as_json(self):
        return {
            "id": self.id,
           #other fields
        }

и потом вызов.
objects = CustomModel.objects.filter(bla_bla_field = '1')
    data = [ obj.as_json() for obj in objects]
    return HttpResponse(json.dumps({"data": data}), content_type='application/json')

Думаю,что общий смысл понятен и этот вариант,если подойдет,можно будет переделать под себя
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы