从外键引用项目
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
列引用了 subjects
的 id
列。
有没有办法让我参考 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'。有关更多详细信息,请访问以下文档:
使用 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
列引用了 subjects
的 id
列。
有没有办法让我参考 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'。有关更多详细信息,请访问以下文档: