0
私の関係(...)に問題があり、その理由を理解できません。1対1の関係複数のファイルを持つSQLAlchemy
エラー:
。:これはクラス名である場合には、「(名「BannedUser」が「定義されていない)InvalidRequestErrorマッパーマッパーを初期化| |ユーザーのユーザー、式 『BannedUserは、』名前を見つけることができませんでした」両方の従属クラスが定義された後で、この関係()をクラスに追加することを検討してください。
これはコードです:
Userモデル
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String
from sqlalchemy.orm import relationship
from .base import Base as BaseModel
class User(BaseModel, declarative_base()):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
username = Column(String(16))
password = Column(String(16))
nickname = Column(String(16))
secret_question = Column(String(50))
secret_answer = Column(String(50))
role = Column(Integer)
is_banned = relationship("BannedUser", uselist=False, back_populates='users')
禁止ユーザモデル:
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, DateTime, ForeignKey
from sqlalchemy.orm import relationship
from .base import Base as BaseModel
class BannedUser(BaseModel, declarative_base()):
__tablename__ = 'banned_users'
id = Column(Integer, primary_key=True)
user_id = Column(Integer, ForeignKey('users.id'))
user = relationship('User', back_populates='banned_users')
reason = Column(String)
time_end = Column(DateTime)
は、私が代わりに直接クラス文字列のクラスを試してみましたが、また動作しないこと。
「users.id」の代わりに「User.id」を試しましたが、同じことが起こりました。
私は何をすべきかわかりません。
ありがとうございました。
私がお勧めするのと同じエンティティのあなたは、テーブル名を指定しながら、関係のもう一方の端に関連しているプロパティを指定する必要がありますback_populates
(
doc)...オン
私は私の質問に言うと同じエラー:( –
ああ、申し訳ありません(私は考えるあなたのコード内でそのまだ問題):
back_populates
と、それは、このような何かを行う必要があります。 'declarative_base'を使う方法に関係しています。これを確認してくださいhttp://stackoverflow.com/questions/7478403/sqlalchemy-classes-across-files – creativeChipsが見つかりました!私はデータベースクラスにBase = declarative_base()を追加し、それを私のモデルで拡張するだけです –