@Lepilov

Как получить json объект содержащий поля модели?

Собственно в заголовке вопрос. Использую sqlalchemy. Сейчас мой код возвращает содержимое __repr__ модели.

engine = create_engine('mysql+mysqldb://.....'
Session = sessionmaker(bind=engine)
session = Session()

def get_all_vehicle(id=None):
    q = session.query(Vehicle).all()
    print(q)
    return q


Функция get_all_vehicle возвращает список [__repr__, ..], в моем случае ['TX213'] так как только один объект добавлен
Если так
def get_all_vehicle(id=None):
    q = session.query(Vehicle).all()
    print(json.dumps(q))
    return q


то
raise TypeError(f'Object of type {o.__class__.__name__} '
TypeError: Object of type Vehicle is not JSON serializable


Я понимаю что дело в том что q = session.query(Vehicle).all() возвращает список и в этом проблема, но не нахожу что использовать вместо этого для получения queryset
  • Вопрос задан
  • 176 просмотров
Пригласить эксперта
Ответы на вопрос 1
skipirich
@skipirich
проходил мимо
В класс где у тебя описана модель добавь метод serialize например в твоей модельке есть поля id и name, тогда
@property
def serialize(self):
   return {
       'id'         : self.id,
       'name': self.name,
   }

а потом в твоей def get_all_vehicle
print(json.dumps([record.serialize for record in q]))
Ответ написан
Ваш ответ на вопрос

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

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