2017-07-10 18 views
0

私は私のmodels.pyファイルに次のコード行を持っている:表 - フラスコSQLAlchemyの

referalls = db.table('referrals', 
       db.Column('referrer', db.String(64), db.ForeignKey('User.email')), 
       db.Column('referral', db.String(64), db.ForeignKey('User.email')) 
       ) 

これは紹介のため多対多の関係テーブルを作成することですシステム私は実装しようとしています。

ただし、マイグレーション/アップグレードコマンドを実行すると、Alembicはテーブルを作成していません。私は公式のフラスコSQLAlchemyのチュートリアル以下のよ

http://flask-sqlalchemy.pocoo.org/2.1/models/

明確さの便宜上が、ここユーザークラスだ:私は私の問題は、次の行であるかもしれないと考えてい

class User(UserMixin, db.Model): 
    __tablename__ = 'users' 
    id = db.Column(db.Integer, primary_key=True) 
    email = db.Column(db.String(64), unique=True, index=True) 
    username = db.Column(db.String(64), unique=True, index=True) 
    role_id = db.Column(db.Integer, db.ForeignKey('roles.id')) 
    password_hash = db.Column(db.String(128)) 
    confirmed = db.Column(db.Boolean, default=False) 
    name = db.Column(db.String(64)) 
    location = db.Column(db.String(64)) 
    about_me = db.Column(db.Text()) 
    member_since = db.Column(db.DateTime(), default=datetime.utcnow) 
    last_seen = db.Column(db.DateTime(), default=datetime.utcnow) 
    ... 

(からプル公式フラスコSQLAlchemyのドキュメント):

tags = db.relationship('Tag', secondary=tags, 
     backref=db.backref('pages', lazy='dynamic')) 

私が試した:

referalls = db.relationship('User', secondary=referalls, 
          backref=db.backref('users', lazy='dynamic')) 

しかし、同じこと:アレンビックは紹介テーブルを識別していません。

これに関するすべてのご意見をいただければ幸いです。

答えて

1

私は同じ問題を抱え、フラスコのチュートリアルのようにテーブルを宣言するのではなく、db.Modelを継承するクラスを使用して解決しました。すべてをクラスとして定義したとき、それはちょうどうまくいった。 おそらくそれはalembicの問題です。

試してみてください。

class Referalls(db.Model): 
    __tablename__ = 'referalls' 
    referrer = db.Column(db.String(64), db.ForeignKey('User.email')) 
    referral = db.Column(db.String(64), db.ForeignKey('User.email')) 
関連する問題