1
我有一個Event
模型,其中有start_date
和due_date
列。 我想創建一個簡單的方法來獲取所有活動事件(已經開始但尚未完成)。燒瓶SQLAlchemy - StaticMethod與自定義查詢類
這是我的事件模型類:
class Event(db.Model):
__tablename__ = 'events'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(254))
description = db.Column(db.Text)
start_date = db.Column(db.DateTime)
due_date = db.Column(db.DateTime)
我熟悉這方面的需要兩個工作方案:
1:用staticmethod
功能,這將使該事件的所有過濾器。查詢對象並返回活動事件的完整列表
class Event(BaseModel):
...
@staticmethod
def get_active():
return Event.query.filter(...).all()
# Usage:
records = Event.get_active()
2:通過創建一個從BaseQuery
繼承的新查詢對象,並將此新的「EventQuery」類分配給模型的query_class
成員。
class EventQuery(BaseQuery):
def get_active(self):
return self.filter(...)
class Event(BaseModel):
__tablename__ = 'events'
query_class = EventQuery
....
# Usage:
Event.query.get_active().all()
所以我想知道,哪種方法更好/推薦?
沒關係。 – davidism
通過什麼指標? 1可能更直接,更容易維護 – chasmani
我看到很多人在這裏推薦創建自定義查詢類,就像我以第二種方式展示的那樣,所以我徘徊,如果這有一個實際的原因...肯定是第一種方式那麼爲什麼在這個「不必要的」自定義查詢功能上有這麼多的文檔呢? – AlonP