我试图在我的python代码中获取2个DateField对象之间的区别,然后根据差异执行计算。 我正在为这个项目使用flask,到目前为止有以下代码。 的观点:
@admin.route('/approve/loan_payment/<id>', methods=['GET', 'POST'])
@login_required
def approve_loan_payment(id):
if not current_user.is_admin:
abort(403)
loan = Loan.query.filter_by(id=id).first()
if loan is None:
abort(404)
else:
form = ApproveLoanPayment()
if current_user.is_admin and form.validate_on_submit():
loan.user.username = form.username.data
loan.loan_amt = form.loan_amt.data
loan.my_funds = form.my_funds.data
loan.approved_on = form.approved_on.data
loan.repaid_on = form.repaid_on.data
loan.period = abs((loan.repaid_on - loan.approved_on).days)
loan.period = abs((loan.repaid_on - loan.approved_on).days)
if loan.period == 'More than 7 days' or \
loan.period == 'more than 7 days':
if loan.maximum_charge > loan.my_funds:
loan.balance = loan.maximum_charge - loan.my_funds
else:
loan.balance = loan.my_funds - loan.maximum_charge
loan.extra = loan.balance
if loan.period == 'Less than 7 days' or \
loan.period == 'less than 7 days':
if loan.minimum_charge > loan.my_funds:
loan.balance = loan.minimum_charge - loan.my_funds
else:
loan.balance = loan.my_funds - loan.minimum_charge
loan.extra = loan.balance
loan.confirm_payment = True
db.session.add(loan)
db.session.commit()
if loan.extra >= 0 or loan.balance == 0:
loan.is_repaid_in_full = True
loan.user.is_owing = False
flash("The Loan has been repaid in full")
if loan.balance > 0:
loan.is_repaid_in_full = False
loan.user.is_owing = True
if loan.maximum_charge > loan.my_funds:
updated_balance = loan.balance
loan.maximum_charge = updated_balance
elif loan.minimum_charge > loan.my_funds:
updated_balance = loan.balance
loan.minimum_charge = updated_balance
flash("Loan payment approved."
"Loan balance is %s" % loan.balance)
flash("The Loan has not yet been repaid in full")
db.session.add(loan)
db.session.commit()
flash('The loan has been repaid')
return redirect(url_for('admin.view_all_loans'))
form.username.data = loan.user.username
form.loan_amt.data = loan.loan_amt
form.my_funds.data = loan.my_funds
form.approved_on.data = loan.approved_on
return render_template('admin/approve-loan-payment.html',
form=form, loan=loan)
然而,这显示了“没有”&#39;作为结果。
此实施的表格是:
class ApproveLoanPayment(Form):
username = StringField('Username', validators=[
Required(), Length(1, 64), Regexp('^[A-Za-z][A-Za-z0-9_.]*$', 0,
'Usernames must have only letters, '
'numbers, dots or underscores')])
loan_amt = FloatField('Borrowed Amount')
approved_on = DateField('Date Approved')
repaid_on = DateField('Date Repaid', default=datetime.utcnow)
period = IntegerField('Period Taken')
my_funds = FloatField('Amount Paid')
submit = SubmitField('Approve Loan')
请强调我做得不对。
答案 0 :(得分:0)
if loan.period == 'Less than 7 days' or \
loan.period == 'less than 7 days':
您正在将一个整数与一个字符串进行比较,该字符串永远不会是True
。猜猜这是伪代码在某些时候,你忘了改变这些有意义的东西。另外,我猜你不想在or
运营商的两边做同样的比较。
if loan.period < 7:
你在超过7天的时间内做了同样的事情。一部分。
我的另一个快速猜测是,破坏你的代码的是,这些条件都没有通过,并且永远不会执行应该始终执行的最少量代码。