0
我敢肯定的標題是不是超級清楚,所以這裏是一些更多的解釋,我有一個模型,設立這樣的:當我使用datetime作爲數據類型時,爲什麼我不能filter_by模型中的字段?
class Event(db.Model):
id = db.Column(db.Integer, primary_key = True)
timestamp = db.Column(db.DateTime)
event_tag = db.Column(db.String(200), unique=True)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
event_title = db.Column(db.String(250))
event_short = db.Column(db.String(500))
event_long = db.Column(db.Text)
event_date = db.Column(db.DateTime)
def __repr__(self):
return '<Event %r>' % (self.event_tag)
我可以創建數據庫中的記錄就好使用:
event1_futureDate = datetime.utcnow() + timedelta(days=5)
event1 = models.Event(timestamp=datetime.utcnow(), event_title='event1', event_tag='friendly_url_tag', user_id=event_user.id, event_date=event1_futureDate, event_short='short event descr.', event_long='Long event description!')
db.session.add(event1)
db.session.commit()
和拉像這樣的信息:
>>> event1 = models.Event.query.get(1)
>>> event1.event_date
datetime.datetime(2016, 2, 27, 4, 42, 44, 372682)
或這樣的:
>>> event2 = models.Event.query.filter_by(event_tag='friendly_url_tag').first()
>>> event2.event_date
datetime.datetime(2016, 2, 27, 4, 42, 44, 372682)
而是試圖查詢與filter_by用db.DateTime場導致這樣的錯誤:
>>> events = models.Event.query.filter_by(event_date>datetime.utcnow()).all()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'event_date' is not defined
我不清楚,爲什麼我不能用在模型中提出的EVENT_DATE在filter_by部分的查詢。
我知道該字段存在,下面的代碼暫時用作旁路。我不喜歡它,寧願在原始選擇中執行此操作,而不是整個表格。
@web.route('/calendar')
def calendar():
events = Event.query.all()
showEvents = []
for event in events:
if event.event_date >= datetime.utcnow():
showEvents.insert(0,event)
return render_template('partial-calendar.html', events=showEvents)
感謝, 邁克爾
這是一直是我所有的煩惱的原因...謝謝! –