Flask-SQLAlchemy findet model class nicht

Django, Flask, Bottle, WSGI, CGI…
Antworten
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

Hallo,

ich habe:

Code: Alles auswählen

class User(UserMixin, db.Model):
	(...)
	personal_records = db.relationship('PersonalRecord', backref='user', uselist=False, lazy=True)
	
class PersonalRecord(db.Model):
	(...)
	user_id = db.Column(db.Integer, db.ForeignKey('user.id'))	
und bei

Code: Alles auswählen

flask db init 
gibt er mir:
sqlalchemy.exc.InvalidRequestError: When initializing mapper mapped class User->users, expression 'PersonalRecord' failed to locate a name ('PersonalRecord'). If this is a class name, consider adding this relationship() to the <class 'app.models.User'> class after both dependent classes have been defined.
Was tue ich falsch?
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
Benutzeravatar
sparrow
User
Beiträge: 4164
Registriert: Freitag 17. April 2009, 10:28

Aus der Hüfte: Die Reihenfolge. Erst PersonalRecord definieren.
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

Hast Recht.
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

Frage dazu:

Wenn ich jetzt dem current_user aus Flask-Login einem personal_record zuordnen will, dann kann ich das ja über:

Code: Alles auswählen

pr = PersonalRecord(record = 'solved P-NP-Problem' , user_id=current_user.id)
machen und danach dann mit

Code: Alles auswählen

current_user.personal_record.record
ausgeben.

Könnte man auch einem bestehenden pr_2 einen neuen user_2 zuordnen? Wenn ja, wie?
Also die andere Richtung der one-to-one Beziehung.
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
Antworten