Как правильно передавать данные с модели через json?

Всем привет.

Есть модель Chat2:

topic = models.CharField(...)
author = models.ForeignKey(...)
chatdate = models.DateTimeField(...)
chattext = models.TextField(...)


Нужно на ajax запрос выдать один чат:

1) Если пробовать передать вот так, то появляется ошибка

def chat_ajax(request):
    if request.POST:
        model = Chat2.objects.get(id=20)

        json = {
            'model ': model, 
        }

        return JsonResponse(json, safe=False)


2) Если делать так, то все работает.

def chat_ajax(request):
    if request.POST:
        model = Chat2.objects.get(id=20)

        json = {
            'topic ': model.topic, 
            'author  ': model.author , 
            'chatdate ': model.chatdate, 
            'chattext ': model.chattext, 
        }

        return JsonResponse(json, safe=False)


Вопрос, как нужно правильно делать, чтобы первый способ нормально все передавал?
  • Вопрос задан
  • 222 просмотра
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
Во-первых, модель можно сериализовать.

Во-вторых, модель можно преобразовать в словарь:
from django.forms.models import model_to_dict
model = Chat2.objects.get(id=20)
field_values = model_to_dict(model)

Наконец из базы можно сразу выбрать не экземпляр модели, а словарь:
field_values = Chat2.objects.get(id=20).values()
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы