Merhabalar, Flask-SQLAlchemy ile ufak çapta proje geliştiriyorum. Bir yerde takıldım. Relationshipli bir db oluşturdum. Yapmak istediğim o kategoride bulunan ürünlerin sayısını ve o kategorideki ürünlerin toplam fiyatını yazdırmak istiyorum bunu nasıl yapabilirim.
models.py
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_login import LoginManager, UserMixin
from flask_msearch import Search
from datetime import datetime
app = Flask(__name__)
app.config["SECRET_KEY"] = "secret"
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db'
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
db = SQLAlchemy(app)
search = Search()
search.init_app(app)
login_manager = LoginManager()
login_manager.init_app(app)
login_manager.login_view = 'login'
class Products(db.Model):
__searchable__ = ["product_name"]
id = db.Column(db.Integer, primary_key=True)
product_name = db.Column(db.String(20))
product_amount = db.Column(db.Integer)
product_price = db.Column(db.Float)
product_date = db.Column(db.DateTime, default=datetime.utcnow)
category_id = db.Column(db.Integer, db.ForeignKey('category.id'))
category = db.relationship('Category', backref="category")
def __repr__(self):
return f"Products('{self.product_name}' '{self.product_amount}' '{self.product_price}' '{self.category}')"
class Category(db.Model):
id = db.Column(db.Integer, primary_key=True)
category_name = db.Column(db.String(80))
def __repr__(self):
return f"{self.category_name}"
app.py
@app.route("/categories", methods=["GET", "POST"])
@login_required
def categories():
categories = Category.query.all()
if request.method == "POST":
category_name = request.form["category_name"]
category = Category(category_name=category_name)
db.session.add(category)
db.session.commit()
return redirect(url_for("categories"))
return render_template("categories.html", categories=categories)
Tablo
<table class="table table-striped mt-4">
<thead>
<tr>
<th scope="col">Category Name</th>
<th scope="col">Total Product</th>
<th scope="col">Update Category</th>
<th scope="col">Delete Category</th>
</tr>
</thead>
<tbody>
{% for category in categories %}
<tr>
<td>{{ category.category_name }}</td>
<td>Product Counter in Specific Category</td>
<th><a href="/update_category/{{ category.id }}" class="btn btn-primary ">Update</a></th>
<th><a href="/delete_category/{{ category.id }}" class="btn btn-danger">Delete</a></th>
</tr>
{% endfor %}
</tbody>
</table>
Yukarıda “Product Counter in Specific Category” yazan yere örneğin ben bir ürün eklediğimde:
Ürünler:
Ürün adı : telefon-1
Ürün adedi: 5
Ürün fiyatı : 150TL
Kategori: Telefon
Ürün adı : telefon-2
Ürün adedi: 3
Ürün fiyatı : 100TL
Kategori: Telefon
gibi oldugunda tabloda telefon kategorisi satırında mesela fiyat yerinde 250TL ürün adedinde 8 yazacak
Bunu nasıl yapabilirim yardımcı olur musunuz?