Искам да актуализирам последната колона на потребителя. За да направя това, опитвам този потребителски модел:
class User(UserMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
...
last_seen = db.Column(db.DateTime(timezone=True), default=datetime.datetime.utcnow)
def ping(self):
self.last_seen = datetime.datetime.utcnow()
db.session.add(self)
db.session.commit()
И този код, който се изпълнява винаги, когато потребителят изпълни някакво действие.
@mod.before_app_request
def before_request():
current_user.ping()
Това е грешката:
TypeError: can"t compare offset-naive and offset-aware datetimes
Как мога да разреша това? Аз използвам postgres и проблемът е лесно симулиран с кода, който показвам.
Отговори:
10 за отговор № 1Създайте дата и час (дата-час, която има часова зона):
import pytz
self.last_seen = datetime.datetime.utcnow().replace(tzinfo=pytz.UTC)
В този случай ще искате да създадете дата на съзнание с текущото време в UTC.
Ще ви трябва pytz
пакет за това (този пакет съдържа най-новата информация за часовата зона и тази информация не е част от стандартната библиотека на Python).