2

私は現在、次の構造のFlaskアプリを持っています。

deploy/
api/
  customer/
    models.py
  contact/
    models.py
  campaign/
    models.py
  activity/
    models.py
  __init__.py
  database.py
tests/
  test_api.py

モデルが非常に多いため、モデルを別々のファイルに分割しました。これにより、DBを初期化しようとしたときに問題が発生します。

私のモデルのそれぞれで、Flask-SQLAlchemyのModel呼び出しを利用できるようにするために次のことを行います。

from flask.ext.sqlalchemy import SQLAlchemy
db = SQLAlchemy()

class User(db.Model):
...

このようにするとdb、モデルごとに異なるオブジェクトが存在するため、アプリを適切に初期化できなくなります。

dbプロジェクトを構造化して、すべてのモデル、テスト、およびcreate_app()関数で使用される1つのオブジェクトを作成するにはどうすればよい__init__.pyですか?

4

1 に答える 1

3

これが1つの方法です:

  myapp /
    __init__。py
    database.py
    app.py
    model1 /
      __init__。py
      models.py
    model2 /
      __init__。py
      models.py

database.py内:

from flask.ext.sqlalchemy import SQLAlchemy
db = SQLAlchemy()

さまざまなmodels.pyファイル:

from ..database import db

class User(db.Model):
    ...

これは、明示的な相対インポートを利用します

于 2013-02-25T16:59:26.680 に答える