как сделать запрос в списке смежности со всеми родителями? - PullRequest
0 голосов
/ 13 января 2019

У меня есть 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

...