ich habe ein Projekt mit flask-sqlalchemy gestartet, bei der ich eine Datenbank mit Relationen (MySQL) erlernen möchte.
Ich habe dabei zwei Tabellen (Gruppen mit Spalte ID, Name) und (Adresse mit Spalten x, y, Gruppe).
Beim Auslesen der Adressentabelle erhalte ich aber nur die ID auf die ich referenziert habe und kann leider keinen Zugriff auf die anderen Values erhalten ("AttributeError: 'int' object has no attribute 'group_name'")
Im Code sieht das so aus:
Code: Alles auswählen
class Gruppe(db.Model):
__bind_key__ = 'Adressen'
__tablename__ = 'Gruppe'
id = db.Column('AK', db.Integer, primary_key = True)
group_name = db.Column('Name Gruppe', db.String(20), nullable = True)
active = db.Column('Aktiv', TINYINT(1))
address = db.relationship('Adressen', backref='Gruppe')
def __init__(self, group_name, active):
self.group_name = group_name
self.active = active
class Adressen(db.Model):
__bind_key__ = 'Adressen'
__tablename__ = 'Adressen'
id = db.Column('ID', db.Integer, primary_key = True, unique = True)
birthday = db.Column('Geburtsdatum', db.DateTime(), nullable = True)
last_name = db.Column('Name', db.String(20), nullable = True)
first_name = db.Column('Vorname', db.String(15), nullable = True)
street = db.Column('Straße', db.String(25), nullable = True)
family = db.Column('FamStand', db.String(1), nullable = True)
comment = db.Column('Bemerkung', LONGTEXT(), nullable = True)
group = db.Column('AK', db.Integer, db.ForeignKey('Gruppe.AK'))
## route zum testen
@app.route('/all')
def addressen_all():
neu = Adressen.query.filter_by(id=1).first()
new = Gruppe.query.filter_by(id=1).first()
name = neu.group
print(neu.group.group_name) ####hier erwarte ich dann einen Name statt der Zahl
print(new.group_name)
return render_template("HTML/Addressen/addressen_all.html", Addresse = Adressen.query.all(), title = 'Adressen')
###im HTML sieht die Tabelle aktuell so aus###
<tbody>
{% for addresse in Addresse %}
<tr>
<td>{{ addresse.id }}</td>
<td>{{ addresse.birthday }}</td>
<td>{{ addresse.last_name }}</td>
<td>{{ addresse.first_name }}</td>
<td>{{ addresse.street }}</td>
<td>{{ addresse.city_plz }}</td>
<td>{{ addresse.family }}</td>
<td>{{ addresse.comment }}</td>
<td>{{ addresse.group}}</td>
</tr>
{% endfor %}
*sollte das mit einem left join gemacht werden, wie bekomme ich diesen denn dann in die HTML Tabelle? (Ohne dabei ggf. die Datenbank zu erweitern etc?
Grüße
Karli