自引用不适用于Flask(SQLAlchemy)

时间:2019-09-11 21:10:51

标签: python sqlalchemy

我正在使用Flask和SQLAlchemy创建一个Web应用程序,但我在自引用方面遇到了麻烦。在我的项目中,我有公司(模型),公司可以有提供商(另一家公司),也可以没有。如果一家公司是提供者,则该公司应具有客户列表(提供服务的每家公司)。

使用SQLAlchemy文档,我试图建立这种自引用关系。

这是我的模特

from flask_login import UserMixin
from . import db

class Organization(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    rut = db.Column(db.String(10), unique=True)
    name = db.Column(db.String(100))
    users = db.relationship('User', backref='organization', lazy=True)

class Company(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    code = db.Column(db.String(100), unique=True)
    name = db.Column(db.String(100))
    provider_id = db.Column(db.Integer, db.ForeignKey('company.id'), nullable=True)
    clients = db.relationship('Company', remote_side=[id])
    users = db.relationship('User', backref='company', lazy=False)

class User(UserMixin, db.Model):
    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(100), unique=True)
    password = db.Column(db.String(100))
    name = db.Column(db.String(1000))
    last_name = db.Column(db.String(1000))
    organization_id = db.Column(db.Integer, db.ForeignKey('organization.id'), nullable=False)
    company_id = db.Column(db.Integer, db.ForeignKey('company.id'), nullable=True)
    is_admin = db.Column(db.Boolean, default=False)
    is_active = db.Column(db.Boolean, default=False)

问题在于,即使我可以注册provider_id(提供商公司),也无法将其与provider对象上的clients字段相关联。因此,如果我拥有这家公司#1,而这是公司#2的提供者,并且我检查了公司#1的客户,那么它是空的。关于我在做什么错的任何想法? 这是我第一次使用Flask和SQLAlchemy。 而且我需要设置客户列表,因为要删除公司,我希望能够删除没有客户的公司。

0 个答案:

没有答案