Создание методов запросов в Peewee Models Python

Я использую соединение Peewee для MySQL в проекте фляги. Я хотел бы знать, можно ли делать запросы в методе модели. Это сделало бы код маршрута чище, например:

Человек.py:

from peewee import *

db = SqliteDatabase('people.db')

class Person(Model):
    name = CharField()
    birthday = DateField()
    is_relative = BooleanField()

    class Meta:
        database = db # This model uses the "people.db" database.

    def getPersonByName(name):
        #logic to get persons by name
        #return result

Сервер.py:

 .
 .
 .
 @app.route('/<name>')
 def index(name):
     persons = Person.getPersonByName(name)
     return render_template('names.html', persons=persons)

person Sebas Pinto    schedule 23.10.2017    source источник


Ответы (1)


В модель можно добавить пользовательские методы для выполнения запросов, чтобы модели оставались толстыми, а представления — тонкими.

class Person(Model):
    ...

    @classmethod
    def get_person_by_name(cls, name):
        result = cls.select().where(cls.name == name)
        return result


 @app.route('/<name>')
 def index(name):
     persons = Person.get_person_by_name(name)
     return render_template('names.html', persons=persons)
person Oluwafemi Sule    schedule 23.10.2017