从外键引用项目

Refer to item from foreign key

使用 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 class 中,您可以看到 subject 列引用了 subjectsid 列。

有没有办法让我参考 questions.subject 或类似的东西而不是 returning 主题 class 的 id,它return 受试者的 subject 会 class 吗?

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

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

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

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