Круговой импорт Flask Sqlalchemy при использовании чертежей - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть приложение фляги, пакеты которого отделены друг от друга с помощью чертежей.У меня есть 3 пакета, которые имеют много-к-одному отношения.

Первый пакет (план) - это Аутентификация (содержит User_Model):

from Billboard.Apps.models import Android_Model
from Billboard.Survey.models import Survey_Model

class User_Model (db.Model, UserMixin):
    __tablename__ = user_model
    ...
    advertised_apps = db.relationship ('Android_Model' , backref = 'user_model' , lazy = True)
    advertised_surveys = db.relationship ('Survey_Model' , backref = 'user_model' , lazy = True)

второй пакет имеет внешний ключ для моей User_Model:

from Billboard.Authentication.models import User_Model

class Survey_Model (db.Model):
    __tablename__ = 'survey_model'
    ...
    advertiser_id = db.Column(db.Integer, db.ForeignKey('user_model.id'), nullable=False)

И модель третьего пакета такая же, как и вторая.

Когда я запускаю свое приложение фляги, я получаю ошибку импорта, которая, как я знаю, предназначена для кругового импорта между этими моделями.

ПРИМЕЧАНИЕ: когда я удаляю это соотношение между этими моделями, я не получаю ошибок, и проект работает правильно.

Есть идеи для решения?

1 Ответ

0 голосов
/ 04 декабря 2018

На самом деле вам не нужно импортировать модель, чтобы объявить отношения с ней.Обратите внимание: db.relationship принимает строку в качестве первого аргумента, а не класс.

...