SQLでのカラムごとに計算した結果を、templateに表示したいのですが、思い通りに行きません。
実現したいことは、Post classのreturn_を合計した値をtemplateに表示することです。
def index の中で t_return = sum(db.session.query(Post.return_).all())のように試みましたが、t_returnがintでなくstrと認識されており、確認するとt_returnが[(200,), (500,), (400,)]となっておりました。試行錯誤しましたが、解決できなかったのでアドバイスをいただければと思います。
python
1from flask import Flask, render_template,request, redirect 2from flask_sqlalchemy import SQLAlchemy 3import datetime 4from flask_bootstrap import Bootstrap 5 6 7app = Flask(__name__) 8app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///blog.db' 9db = SQLAlchemy(app) 10bootstrap = Bootstrap(app) 11 12class Post(db.Model): 13 id = db.Column(db.Integer, primary_key=True) 14 date = db.Column(db.Date, nullable=False, 15 default=datetime.date.today()) 16 kinds = db.Column(db.String(10), nullable=False) 17 invest = db.Column(db.Integer, nullable=False) 18 return_ = db.Column(db.Integer, unique=False) 19 20 21@app.route("/", methods=['GET','POST']) 22def index(): 23 if request.method =='GET': 24 posts = Post.query.all() 25 t_return = db.session.query(Post.return_).all() 26 return render_template('index.html', posts=posts, t_return=t_return) 27 28@app.route("/create", methods=['GET','POST']) 29def create(): 30 if request.method == 'POST': 31 title = request.form.get('title') 32 invest = request.form.get('invest') 33 return_ = request.form.get('return') 34 post = Post(kinds=title, invest=invest, return_=return_) 35 db.session.add(post) 36 db.session.commit() 37 return redirect('/') 38 else: 39 return render_template('create.html')
index.html
1{% extends 'bootstrap/base.html' %} 2{% block title %}タイトル 3{% endblock %} 4{% block content %} 5<div class="container"> 6 <h2>累計</h2> 7 {{ t_return }} 8 <table class="table"> 9 <thead> 10 <tr> 11 <th scope="col">No</th> 12 <th scope="col">Date</th> 13 <th scope="col">Kinds</th> 14 <th scope="col">Invest</th> 15 <th scope="col">Return</th> 16 </tr> 17 </thead> 18 {% for post in posts %} 19 <tbody> 20 <tr> 21 <th scope="row">{{ post.id }}</th> 22 <td>{{ post.date }}</td> 23 <td>{{ post.kinds }}</td> 24 <td>¥{{ post.invest }}</td> 25 <td>¥{{ post.return_ }}</td> 26 27 </tr> 28 </tbody> 29 {% endfor %} 30 {% endblock %} 31