2016-07-19 5 views
-2

私はPythonコード内の2つのDateFieldオブジェクトの違いを取得し、その後、その違いに基づいて計算を実行しようとしています。 私はこのプロジェクトでフラスコを使用していますが、これまでに以下のコードがあります。 再生回数:Pythonの日で2つの日時フィールドの違いを取得

@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) 

しかし、これは結果として 'なし' を表示しません。

この実装のための形式は次のとおりです。親切に私は右致しておりませんどのようなハイライト

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

質問を正しくフォーマットできますか?コードは読めません – SnoozeTime

+0

私はちょうどしました。それを今見てみましょう。 –

+1

Noneを表示する関数呼び出しは何ですか?最小の実例を提供できますか?これは物事をはるかに理解しやすくします。 – Ohumeronen

答えて

0
if loan.period == 'Less than 7 days' or \ 
      loan.period == 'less than 7 days': 

整数を文字列と比較すると、決してTrueになりません。これはある時点では擬似コードだったと思いますが、これらのビットを変更するのは忘れてしまいます。また、私はあなたがor演算子の両側で同じ比較をしたくないと思っています。

if loan.period < 7: 

「7日以上」と同じことをしました。

私のもう一つの素敵な推測は、あなたのコードを壊しているのは、これらの条件のどれもが通過せず、常に実行すべき最小量のコードが実行されないということです。

関連する問題