将日期时间计算添加到数据库中



我正在尝试用Flask应用程序在date.time上执行一些计算和逻辑。1.(申请将计算发行日期和到期日期之间的差额,称为"到期日";剩余天数",应用程序将检查剩余天数是否小于365天,并触发功能

我尝试了第一个逻辑来操作数据并提交到数据库

`@bp.route('/ceracs/add',methods=['GET','POST'](@login_必需def add_cerpac((:"quot"将Cerpac/expartariates添加到数据库"quot"check_admin((add_cerpac=真

form =CerpacForm()
if form.validate_on_submit():
cerpac = Cerpac(cerpac_serial_no=form.cerpac_serial_no.data, 
cerpac_issue_date= form.cerpac_issue_date.data, 
cerpac_exp_date=form.cerpac_exp_date.data,
employee =form.employee.data, )
form.cerpac_issue_date.data = cerpac.cerpac_issue_date
form.cerpac_exp_date.data = cerpac.cerpac_exp_date
if request.method == 'POST':
todays_date = datetime.now()
t = cerpac.cerpac_issue_date 
t1 = cerpac.cerpac_exp_date
remaining_days = t1 - t
print(remaining_days)  - good prints my result!
remaining_days = cerpac.remaining_days ----not adding to database

try:
add cerpac to the database
db.session.add(cerpac)
db.session.commit()
flash('You have successfully added a Cerpac.' )`

`我的型号:

class Cerpac(db.Model):
__tablename__ = 'cerpacs'
id = db.Column(db.Integer, primary_key=True) 
cerpac_issue_date = db.Column(db.DateTime)
cerpac_exp_date=db.Column(db.DateTime)
remaining_days = db.Column(db.DateTime)
cerpac_serial_no = db.Column(db.String(60))
cerpac_upload = db.Column(db.String(20), default='cerpac.jpg')
renew_status = db.Column(db.Boolean, default=False)
process_status = db.Column(db.Boolean, default=False)
renewcerpac_id = db.Column(db.Integer, db.ForeignKey('renewcerpacs.id'))
employee_id = db.Column(db.Integer, db.ForeignKey('employees.id'))

def __repr__(self):
return '<Cerpac {}>'.format(self.name) model: 

我想把它添加到数据库中,并最终编写一个函数,如下所示:我在代码中也有一个错误,因为我没有定义错误issue_date。如何将issue_date定义为date.time变量?

def  remaining_days(issue_date, expired_date):
issue_date = datetime(issue_date)
days_to_go = expired - issue
if days_to_go == 365:
renew_status== True
print("time to renew")
print("We are Ok")

我会将其简化为:

from datetime import datetime
class Cerpac(db.Model):
...
cerpac_exp_date=db.Column(db.DateTime)
...
@property
def remaining_days(self):
return (self.cerpac_exp_date - self.cerpac_issue_date).days
@property
def days_to_expiry(self):
return (self.cerpac_exp_date - datetime.now()).days

然后,days_to_expiryremaining_days将成为查询时计算的属性,并在续订卡时自动更新。

最新更新