我想查询所有至少共享一个类似属性/内容的用户(在这种情况下为大学(。
models.py
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(20), unique=True,
nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
image_file = db.Column(db.String(20), nullable=False, default='default.jpg')
password = db.Column(db.String(60), nullable=False)
colleges = db.relationship('College', backref='author',
lazy=True)
def __repr__(self):
return "{}, {}, {}".format(self.username, self.email,
self.image_file)
class College(db.Model):
id = db.Column(db.Integer, primary_key=True)
content = db.Column(db.Text, nullable=False)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'),
nullable=False)
def __repr__(self):
return "{}".format(self.content)
在终端测试DB
#after creating db
user_1 = User(username='name',
email='example@demo.com',password='password')
db.session.add(user_1)
db.session.commit()
user = User.query.filter_by(username='name').first()
college_1 = College(content='College1', user_id=user.id)
college_2 = College(content="College2', user_id=user.id)
db.session.add(college_1)
db.session.add(college_2)
db.session.commit()
在这一点上,我想查询所有至少一所大学的用户(在College_1或College_2之间(。因此,我想通过查询所有至少包含College_1或College_2的用户来返回User_1(以及其他添加的其他ID(。
我尝试了此查询:
User.query.filter_by(colleges="Dartmorth").all()
,但它返回"无法将集合与对象或收集进行比较;&quotsqlalchemy.exc.invalidrequesterror:无法将集合与对象或集合进行比较;使用contains((测试会员资格。'
而不是在User
模型上查询,您需要查询College
ONE:
colleges = College.query.filter_by(content="Dartmorth").all()
它应该返回大学实例列表,授予它不是空的,您可以通过它迭代并提取user_id:
user_0 = colleges[0].user_id