我已经使用“ flask-sqlalchemy”创建了一个数据库。
有两个表:“大学”和“两场制”
一所大学可以有多个领域,因此在这里我们是一对多的关系。 因此,当我们查询大学时,它还会为大学表的每一行返回一个字段列表。代码如下:
class University(db.Model):
name = db.Column(db.String(120), index=True, unique=True, primary_key=True)
country = db.Column(db.String(128))
fields = db.relationship('Field', lazy='dynamic')
...
...
class Field(db.Model):
id = db.Column(db.Integer, primary_key=True)
study = db.Column(db.String(256), nullable=False)
grade = db.Column(db.String(256))
university_name = db.Column(db.String(256), db.ForeignKey('university.name'))
我的问题是:我想同时查询大学及其关系,以便结果将是一个大学对象,其中只包含一个特定的Field对象(而不是所有Field的列表)与那个大学对象有关),因此在我过滤了大学之后,我要过滤(查询)它的关系
我有3个用于查询的参数,一个是在大学里,另外两个是关于它的关系:
country_param = 'usa'
grade_param = 'master'
study_param = 'electronics'
我正在苦苦挣扎着阅读sqlalchemy文档,flask-sqlalchemy文档两天,并且我已经在堆栈溢出中阅读并尝试了许多类似的问题,但没有任何效果。
加上许多不同的组合,例如
existing = University.query.join(University.fields).filter(University.country == 'usa',
Field.grade == 'phd').first()
或
a = Field.query.with_parent(u).filter(Field.grade == 'master').all()
我已经尝试过,但是没有用。
-感谢您阅读我的问题并为我提供帮助