Модель Peewee для JSON

Я создаю API, используя peewee как ORM, и мне нужна возможность конвертировать объект модели peewee в объект JSON для отправки пользователю. Кто-нибудь знает хороший способ сделать это?

  • Как я могу заставить setuptools установить пакет, который не находится в PyPI?
  • Запрос Mongodb по месяцам, дням, годам ... datetime
  • Кодировка HTML и анализ lxml
  • Сравнение перечня списков и явных циклов (3 генератора массива быстрее, чем 1 для цикла)
  • Как POST элемент xml в python
  • Вход в два файла с различными настройками
  • venv не создает активацию скрипта python3
  • AttributeError: объект 'list' не имеет атрибута 'encode'
  • 3 Solutions collect form web for “Модель Peewee для JSON”

    вы можете сделать что-то вроде этого:

    class MyModel(peewee.Model): def __str__(self): r = {} for k in self._data.keys(): try: r[k] = str(getattr(self, k)) except: r[k] = json.dumps(getattr(self, k)) return str(r) class User(MyModel): email = CharField() status = CharField(default="enabled") firstname = CharField() lastname = CharField() class Meta: database = db 

    Peewee имеет помощники model_to_dict и dict_to_model в модуле расширения dict_to_model .

    Вы можете использовать их следующим образом:

     from playhouse.shortcuts import model_to_dict, dict_to_model user_obj = User.select().where(User.username == 'charlie').get() json_data = json.dumps(model_to_dict(user_obj)) 

    Также обратите внимание, что model_to_dict() может рекурсивно проходить через связанные модели, включать модели с обратной ссылкой и исключать некоторые поля из сериализации.

    Кроме того, вы можете получить модель как dict, а затем преобразовать в json с правильными типами полей (bool, int, float и т. д.):

     import peewee import json from bson import json_util from datetime import datetime class User(peewee.Model): email = CharField() status = BooleanField(default=True) firstname = CharField() lastname = CharField() age = IntegerField() created = DateTimeField(default=datetime.now()) class Meta: database = db user = User.select().dicts().get() print json.dumps(user, default=json_util.default) 
    Python - лучший язык программирования в мире.