Это моя структура проекта колбы
app
--main
--model
--note.py
--user.py
--todaynote.py
manage.py
, и я импортировал всю модель в manage.py
from app.main import create_app, db
from app.main.model import todaynote
from app.main.model import note
from app.main.model import user
Инициализирую базу данных mysql с db.create_all()
и затем, когда я создал объект Userчтобы проверить БД в REPL, я получил эту ошибку
sqlalchemy.exc.InvalidRequestError: When initializing mapper mapped class User->user, expression 'TodayNote' failed to locate a name ("name 'TodayNote' is not defined"). If this is a class name, consider adding this relationship() to the <class 'app.main.model.user.User'> class after both dependent classes have been defined.
Странный пункт 1. Когда я помещаю User и TodayNote в один и тот же модуль, он не выдает ошибку 2. Обратите внимание, что связь с пользователем не выдает никакой ошибки
это мои модели user.py
class User(db.Model):
__tablename__ = "user"
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
email = db.Column(db.String(255), unique=True, nullable=False)
registered_at = db.Column(db.DateTime, nullable=False)
password_hash = db.Column(db.String(100))
notes = db.relationship('Note', backref='user', lazy=True)
todaynote = db.relationship('TodayNote', backref='user', uselist=False, lazy=True)
lastlogin_at = db.Column(db.DateTime, nullable=False)
keep_email = db.Column(db.String(255))
keep_token = db.Column(db.String(500))
keep_lastlogin_at = db.Column(db.DateTime)
oneSignalId = db.Column(db.String(255))
note.py
class Note(db.Model):
__tablename__ = 'note'
id = db.Column(db.String(100), primary_key=True)
title = db.Column(db.String(255))
text = db.Column(db.Text)
blobs = db.Column(db.String(500))
labels = db.Column(db.String(255))
created_at = db.Column(db.DateTime)
updated_at = db.Column(db.DateTime)
checked_at = db.Column(db.DateTime)
like = db.Column(db.Boolean, default=True)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
todaynote.py
class TodayNote(db.Model):
__tablename__ = 'todaynote'
id = db.Column(db.Integer, primary_key=True)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
note_id = db.Column(db.String(100))
title = db.Column(db.String(255))
text = db.Column(db.Text)
blobs = db.Column(db.String(500))
labels = db.Column(db.String(255))
created_at = db.Column(db.DateTime)
updated_at = db.Column(db.DateTime)
checked_at = db.Column(db.DateTime)
like = db.Column(db.Boolean, default=True)
Я думаю, что это импортпроблема, но нет никакой разницы между note.py и todaynote.py.