У меня есть 2 взаимосвязанные таблицы.
первая таблица для хранения нескольких продуктов, а вторая таблица для размещения нескольких категорий имен с родителем
https://prnt.sc/m6imvo
как отобразить товар со всеми категориями и родителями?
Вот код, который я сделал
class Barang(db.Model):
id = db.Column(db.Integer, primary_key=True)
nama = db.Column(db.String(255), nullable=False)
harga = db.Column(db.Numeric)
stok = db.Column(db.Integer)
berat = db.Column(db.Integer, nullable=False)
deskripsi = db.Column(db.Text)
gambar_thumbnail = db.Column(db.String(20), nullable=False, default='default.jpg')
gambar_besar = db.Column(db.String(20), nullable=False, default='default_besar.jpg')
id_kategori = db.Column(db.Integer, db.ForeignKey('kategori.id'))
tanggal_masuk = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
keranjang = db.relationship('Keranjang', backref='keranjang', lazy=True)
class Kategori(db.Model):
id = db.Column(db.Integer, primary_key=True)
nama = db.Column(db.String(255), nullable=False)
parent_id = db.Column(db.Integer, db.ForeignKey('kategori.id'))
replies = db.relationship("Kategori", backref=db.backref('parent', remote_side=[id]), lazy=True)
kategori = db.relationship('Barang', backref='kategori', lazy=True)
На моих маршрутах
@app.route('/produk/<int:brg_id>')
def produk(brg_id):
barang = Barang.query.get_or_404(brg_id)
if current_user.is_authenticated:
hit = Keranjang.query.filter_by(pembeli=current_user).count()
else:
hit = 0
return render_template('detil.html', barang=barang, hit=hit)
шаблон дзиндзя
<li class="breadcrumb-item"><a href="#">Home</a></li>
{% if barang.kategori.parent_id %}
<li class="breadcrumb-item">
{{ barang.kategori.parent }}
</li>
<li class="breadcrumb-item">
{{ barang.kategori }}
</li>
{% endif %}
например, если я иду в маршруты / продукты / 6
он будет производить дома / Kabel UTP / Kabel Cat6 / Kabel Belden Cat6
пока я хочу результатов home / networking / kabel utp / kabel cat6 / kabel belden cat6