我有一個聲明模型,其中表存儲對象的「原始」路徑標識符。然後我有一個@hybrid_property
,它允許直接獲取和設置由該字段標識的對象(這是而不是另一個聲明性模型)。有沒有辦法直接在這個高層次上查詢?按SQLAlchemy中的對象過濾
我可以這樣做:
session.query(Member).filter_by(program_raw=my_program.raw)
我希望能夠做到這一點:
session.query(Member).filter_by(program=my_program)
其中my_program.raw == "path/to/a/program"
Member
有場program_raw
並得到一個屬性program
更正Program
實例並設置適當的值program_raw
。 Program
有一個簡單的raw
字段,可以唯一標識它。如有必要,我可以提供更多代碼。
問題是,目前,SQLAlchemy只是試圖將程序實例作爲參數傳遞給查詢,而不是其raw
的值。這導致Error binding parameter 0 - probably unsupported type.
錯誤。
- 要麼,SQLAlchemy的需要知道比較
program
時,必須使用Member.program_raw
和匹配,對參數的raw
財產。得到它使用Member.program_raw
是簡單地使用@program.expression
做,但我無法弄清楚如何將Program
參數正確轉換(使用比較?),和/或 - SQLAlchemy的應該知道,當我被
Program
例如過濾,它應該使用raw
屬性。
我用例是或許有點抽象,但是想象一下,我存儲在數據庫序列化RGB值,並與模型上的顏色類的屬性。我想通過Color類進行過濾,而不必處理濾鏡中的RGB值。色類沒有問題告訴我它的RGB值。