【发布时间】:2021-10-17 20:24:52
【问题描述】:
我想在我的 models.py 中创建一个名为“date_expiration”的列,它采用当前时间并增加四天。以下代码导致unsupported operand type(s) for +: 'builtin_function_or_method' and 'datetime.timedelta',因为我没有用括号()显式调用utcnow。
这是我的班级出现上述错误:
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 列的正确方法是什么?
【问题讨论】:
-
看看这个 SO 答案中列出的选项:stackoverflow.com/a/33532154/42346
-
你用的是什么数据库?
-
警告 - 您的代码中有错字:defualt
-
我现在正在使用 SQLite,计划稍后在接近部署时将其换掉
-
该 SO 答案中的选项确实有所帮助,但由于添加到当前时间,我没有看到太多关于设置未来日期/时间的信息。使用“datetime.datetime.utcnow() + datetime.timedelta(days=4)” 会起作用(注意括号),但这会破坏设置时间的目的,该时间总是在设置 date_submission 值后四天
标签: python flask sqlalchemy flask-sqlalchemy