Quero atualizar a última coluna vista pelo usuário. Para fazer isso, estou tentando este modelo de usuário:
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()
E esse código que sempre é executado quando o usuário executa alguma ação.
@mod.before_app_request
def before_request():
current_user.ping()
Este é o erro:
TypeError: can"t compare offset-naive and offset-aware datetimes
Como posso resolver isso? Estou usando o postgres e o problema é facilmente simulado com o código que estou mostrando.
Respostas:
10 para resposta № 1Crie um datetime com reconhecimento (um datetime com fuso horário):
import pytz
self.last_seen = datetime.datetime.utcnow().replace(tzinfo=pytz.UTC)
Nesse caso, você desejará criar uma data e hora com a hora atual no UTC.
Você precisará do pytz
pacote para este (este pacote contém as informações mais recentes sobre fuso horário e essas informações não fazem parte da biblioteca padrão do Python).