请参阅外键中的项目

时间:2015-08-08 01:30:40

标签: python sql flask sqlalchemy flask-sqlalchemy

使用Flask-SQLAlchemy,我有这样的数据库模型:

class subjects(db.Model):

    id = db.Column(db.Integer, primary_key=True)
    subject = db.Column(db.String(100))
    color = db.Column(db.Integer)

    def __init__(self, subject):
        self.subject = subject

class questions(db.Model):

    id = db.Column(db.Integer, primary_key=True)
    subject = db.Column(db.Integer, db.ForeignKey('subjects.id'))
    question = db.Column(db.String(500), nullable=True)


    def __init__(self, subject, question):
        self.subject = subject
        self.question = question

如您所见,在questions课程中,您可以看到subject列引用了id的{​​{1}}列。

有没有办法,如果我要引用subjects或类似的东西而不是返回主题类的questions.subject,它将返回id个主题班而不是?

此外,subject中的subject列不会是唯一的,因此我无法使用该列创建外键。感谢。

1 个答案:

答案 0 :(得分:0)

SQLAlchemy的relationship()函数就是你所追求的。首先,将questions.subject重命名为questions.subject_id,然后使用subject函数创建新的relationship()属性,如下所示:

class questions(db.Model):
    subject_id = db.Column(db.Integer, db.ForeignKey('subjects.id'))
    subject = db.relationship("subjects")
    ... etc ...

您还可以使用关系上的backref参数来创建从questions实例到其所有subjects的“反向引用”。有关更多详细信息,请访问以下文档: