使用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
列不会是唯一的,因此我无法使用该列创建外键。感谢。
答案 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
的“反向引用”。有关更多详细信息,请访问以下文档: