2017-07-07 7 views
0

私はFlask-SQLAlchemyを持つFlaskアプリを持っています。私はユーザーから旅行への1対1の関係を作ろうとしています。私は、SQLAlchemyのdeclarative_baseを使用すると動作しますが、Flask-SQLAlchemyのdb.Modelを使用すると動作しません。モデルは、ここでFlask-SQLAlchemy 1対多の関係が名前の検索に失敗しました

sqlalchemy.exc.InvalidRequestError: When initializing mapper Mapper|User|User, expression 'Trip' failed to locate a name ("name 'Trip' is not defined"). If this is a class name, consider adding this relationship() to the <class 'models.user.User'> class after both dependent classes have been defined. 

されています:

私は次のエラーを取得しています

database.py

from flask import abort 
from flask_sqlalchemy import SQLAlchemy 
from sqlalchemy import exc 

db = SQLAlchemy() 


class Mixin(db.Model): 
    __abstract__ = True 
    id = db.Column(db.Integer, primary_key=True) 
    date = db.Column(db.DateTime, default=db.func.now()) 
    date_changed = db.Column(
     db.DateTime, nullable=True, onupdate=db.func.now()) 
    date_to = db.Column(db.DateTime, nullable=True) 

user.py

from database import Mixin, db 

class User(Mixin, db.Model): 
    __tablename__ = 'User'   
    trips = db.relationship(
     'Trip', 
     backref=db.backref('user', lazy='joined'), 
     lazy='dynamic' 
    )  

旅。 py

from database import Mixin, db 

class Trip(Mixin, db.Model): 
    __tablename__ = 'Trip' 
    title = db.Column(db.String(100), nullable=False) 
    description = db.Column(db.String(250), nullable=False)   
    user_id = db.Column(
     db.Integer, 
     db.ForeignKey('User.id'), 
     nullable=False 
    )  
+1

をファイルあなたはおそらく、すべての 'trip'モジュールをインポートしていない、またはあなたがある場合は、適切なタイミングでそれをやっていません。 – univerio

+0

しかし、SQLAlchemyのdeclarative_baseを使用すると、なぜ動作しますか? – BrHa

+0

私は知らないので、コードの残りの部分を投稿する必要があります。 – univerio

答えて

0

私のモデルには1つのファイルを使用して修正しました。とにかく、複数のモデルファイルが必要なだけのモデルがありませんでした。

0

すべてのモデルを1つのファイルに保存することは良い考えですが、少数のモデルの場合のみです。大規模な私は、セマンティックに別のファイルにモデルを格納することを好むだろう。すべてのモデルをインポートする__init__.py必要で

models 
├── __init__.py 
├── model1.py 
├── model2.py 
└── model3.py 

import models.model1.py 
import models.model2.py 
import models.model3.py 
関連する問題