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