Ich habe eine Flasche, sqlalchemy, jinja2 App mit dem folgenden Problem. Ich versuche, ein Modell in einer HTML-Tabelle anzuzeigen und Paginierung damit zu haben. Das Modell enthält eine Reihe von Fremdschlüsseln, so dass in der Tabelle der Fremdschlüssel angezeigt wird. Ich möchte die __repr__
des Modells oder eines der Felder dieses Modells anzeigen.
# models.py
Anzeigen Modelle mit Fremdschlüssel und Paginierung
class WorkLog(db.Model):
__tablename__ = 'work_log'
id = db.Column(db.Integer, primary_key=True)
mechanic = db.Column(db.Integer, db.ForeignKey('users.id'))
building_id = db.Column(db.Integer, db.ForeignKey('buildings.id'))
elevator_id = db.Column(db.Integer, db.ForeignKey('elevators.id'))
work_type_id = db.Column(db.Integer, db.ForeignKey('work_type.id'))
component_id = db.Column(db.Integer, db.ForeignKey('component.id'))
date = db.Column(db.Date(), default=datetime.utcnow().date())
time_in = Column(TIME(), default=(datetime.utcnow() - timedelta(hours=4)).time())
time_out = Column(TIME(), default=(datetime.utcnow() - timedelta(hours=2)).time())
notes = db.Column(db.Text)
Die Ansicht Funktion übergibt Modell mit Paginierung
#views.py
# build the time review table with pagination
u = User.query.get(current_user.get_id())
work_logs = u.work_log.paginate(page, 10, False).items
return render_template('mechanic/mechanic.html', form=form, logs=work_logs)
Der relevante Teil der Vorlage
mechanic.html
<table class="table table-striped">
<thead>
<tr>
<th>Building</th>
<th>Elevator</th>
<th>Work Type</th>
<th>Time In</th>
<th>Time Out</th>
</tr>
</thead>
<tbody>
{% for log in logs %}
<tr>
<td>{{ log.building_id }}</td>
<td>{{ log.elevator_id }}</td>
<td>{{ log.work_type_id }}</td>
<td>{{ log.time_in }}</td>
<td>{{ log.time_out }}</td>
</tr>
{% endfor %}
</tbody>
</table>
Es ist die drei Felder, die ID beenden, die ein Fremdschlüssel sind und das __repr__
für das Objekt oder ein Feld anzeigen möchten. Was ist mein bester Weg, dies zu tun?
Danke! Ich hatte bereits die Beziehung dort in den anderen Modellen, die 'relation()' mit der 'backref =' Option verwenden. So konnte ich 'log.building' in der Vorlage verwenden und es funktionierte. –