2009-09-11 38 views
1

是否可以使用另一個表的值對SQLObject返回的結果進行排序?按SQLObject中的外鍵引用的另一個表的字段排序

我有兩個表:

class Foo(SQLObject): 
     bar = ForeignKey('Bar') 

    class Bar(SQLObject): 
     name = StringCol() 
     foos = MultipleJoin('Foo') 

我想獲得foo S按一個bar他們都涉及到的name排序。

這樣做:

foos = Foo.select().orderBy(Foo.q.bar) 

...將排序bar輸出的ID,但我怎麼通過bar排序他們的名字?

+0

你試過foos = Foo.select()。orderBy(Foo.q.bar.name)?我想它會按照酒吧的名字對輸出進行排序。 – Mohamed 2009-09-12 05:44:34

+0

@Ainab:是的,它不會工作。 AttributeError:SQLObjectField實例沒有屬性'name' – Alex 2009-09-12 12:07:01

+0

如果你給出了一個現實的例子而不是foo和bar,那麼這個問題會更容易理解。 – 2009-10-23 15:12:09

回答

3

下面是一個SQLObject的維護者的答案(他有麻煩張貼自己因爲不顯示驗證碼):

做一個明確的加盟:

foos = Foo.select(Foo.q.barID==Bar.q.id, orderBy=Bar.q.name) 

這生成一個查詢:

SELECT foo.id, foo.bar_id FROM foo, bar WHERE ((foo.bar_id) = (bar.id)) ORDER BY bar.name 

PS。我是SQLObject的當前維護者。我不訪問stackoverflow.com;我的一位朋友指出了我的問題。如果您對SQLObject有更多疑問,我會邀請您參加SQLObject mailing list

相關問題