1
我有一个设置,看起来像这样:SQLAlchemy的:使用像()上的关系()
class Name(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.Text)
class Person(db.Model):
id = db.Column(db.Integer, primary_key=True)
name_id = db.Column(db.Integer, db.ForeignKey('name.id'))
_name = db.relationship('Name')
@property
def name(self):
return self._name.name
调用Person.name返回一个包含自己的实际名称的字符串,例如。
我正在构建基于此的RESTful API。我需要允许使用基于Person名称的通配符进行搜索。我正在寻找的功能是:
Person.query.filter(Person.name.like('Z%'))
会选择Zack,Zed,Zoo等。但是,您不能在name
上使用.like()
,因为它是属性而不是列。
有没有办法解决这个问题?
我得到'ProgrammingError:(psycopg2.ProgrammingError)操作符不存在:整数~~ *未知LINE 3:WHERE node.id ILIKE '' AND node.ipaddress ILIKE'和节点... 。^提示:没有操作符匹配给定的名称和参数类型。您可能需要添加明确的类型转换。“问题中的人员和姓名仅仅是一个例子。我不知道这里会发生什么问题。 –
如果您发布实际/正在运行的代码的示例,它将有所帮助。 – Lee
你可以使用关系做一个简单的查询吗?例如'... query(Person).join(Person._name).filter(Name.id == 1).all()' - 只是为了确保关系设置正确。 – Lee