Ich verwende eine Join-basierte Vererbung - ich habe User
(Eltern) und CorporateUser
(Kind) Modelle. Die polymorphe Identität des Benutzers ist "user"
und die des CorporateUser ist "corporate_user"
.
Ich habe eine Abfrage wie diese
User.query.filter(User.name.like("%"+search_text+"%"))
Ist es möglich, diese Abfrage etwas zu „Kette“, die nur Objekte vom Typ CorporateUser
zurückkehren wird?
Zur Zeit füge ich nur noch ein User.query.filter(User.name.like("%"+search_text+"%")).filter(User.type == 'corporate_user')
hinzu, aber das scheint nicht sehr elegant.Sqlalchemy FILTER basierend auf Subtyp
Ich bin mir bewusst, ich kann einfach tun CorporateUser.query.filter(User.name.like("%"+search_text+"%"))
aber der Punkt ist, dass ich die Filter der ersten Abfrage gegeben habe.
Danke.
Ich sehe das jetzt - Entschuldigung. Ich hatte am Ende eine "Basis" GenericUser und zwei Unterklassen - NormalUser und CorporateUser - Abfrage ist jetzt viel einfacher. Auch der Ansatz, den ich nahm, ist ein .join (CorporateCustomer) nach dem. Filter - so dass der Name Filter angewendet wird und dann nur die CorporateCustomers zurückgegeben werden. –