如何在 (Flask-)SQLAlchemy 中使用 timedelta?
How to use timedelta in (Flask-)SQLAlchemy?
我想在我的 models.py 中创建一个名为“date_expiration”的列,它使用当前时间并向其添加四天。以下代码导致 unsupported operand type(s) for +: 'builtin_function_or_method' and 'datetime.timedelta'
,因为我没有明确地使用括号 () 调用 utcnow。
这是我的 class 上面的错误:
class Submission(db.Model):
id = db.Column(db.Integer, primary_key=True)
uri = db.Column(db.String(100), nullable=False)
uri_name = db.Column(db.String(60), nullable=False)
reviewer = db.Column(db.String(50), nullable=False)
url = db.Column(db.String(200), nullable=False)
date_submission = db.Column(db.DateTime, nullable=False,
default=datetime.datetime.utcnow)
date_expiration = db.Column(db.DateTime, nullable=False, default=
(datetime.datetime.utcnow + datetime.timedelta(days=4)))
submission_description = db.Column(db.Text, nullable=False)
设置 date_expiration 列的正确方法是什么?
为您的 date_exipiration
列尝试此代码,这会起作用:
date_expiration = db.Column(db.DateTime, nullable=False, default= (datetime.datetime.today() + datetime.timedelta(days=4)))
使用 datetime.datetime.today()
而不是 datetime.datetime.utcnow
。
因为,两者是不同的类型,所以你会出错。
我想在我的 models.py 中创建一个名为“date_expiration”的列,它使用当前时间并向其添加四天。以下代码导致 unsupported operand type(s) for +: 'builtin_function_or_method' and 'datetime.timedelta'
,因为我没有明确地使用括号 () 调用 utcnow。
这是我的 class 上面的错误:
class Submission(db.Model):
id = db.Column(db.Integer, primary_key=True)
uri = db.Column(db.String(100), nullable=False)
uri_name = db.Column(db.String(60), nullable=False)
reviewer = db.Column(db.String(50), nullable=False)
url = db.Column(db.String(200), nullable=False)
date_submission = db.Column(db.DateTime, nullable=False,
default=datetime.datetime.utcnow)
date_expiration = db.Column(db.DateTime, nullable=False, default=
(datetime.datetime.utcnow + datetime.timedelta(days=4)))
submission_description = db.Column(db.Text, nullable=False)
设置 date_expiration 列的正确方法是什么?
为您的 date_exipiration
列尝试此代码,这会起作用:
date_expiration = db.Column(db.DateTime, nullable=False, default= (datetime.datetime.today() + datetime.timedelta(days=4)))
使用 datetime.datetime.today()
而不是 datetime.datetime.utcnow
。
因为,两者是不同的类型,所以你会出错。