2010-03-26 73 views
1

嘿,我有這段代碼,但它不工作,因爲它期待一個字符串。我怎樣才能使它工作?GQL如何通過UserProperty進行選擇

class Atable(BaseModel): 
    owner = db.UserProperty() 
     (...) 

--------- // -------------- 
query = "SELECT * FROM Atable WHERE owner=", users.get_current_user() 
results = db.GqlQuery(query) 

如何修復該搜索? 謝謝:)

我已經開始與數據庫的AppEngine昨天如此溫柔:)

+0

如果有人能解決這個問題絲毫不差於:

@staticmethod def get_something_by_user(user): query = db.Query(Something).filter('users =', user) result = query.fetch(limit=1000) return result 

然後你通過這樣叫它更具描述性的標題,這將是偉大的:) – fmsf 2010-03-26 17:09:51

+0

我認爲你的問題的標題很好 – 2010-03-26 18:33:57

+2

請,請不要組裝字符串連接的GQL字符串。我們不需要GQL注入漏洞。 – 2010-03-26 21:53:29

回答

2
query = GqlQuery("SELECT * FROM Atable WHERE owner = :1", users.get_current_user()) 
+0

不,只是「WHERE所有者=:1」 - 添加USER將使它期望一個字符串。 – 2010-03-26 21:52:49

3

你可以嘗試GQL方式:

results = db.GqlQuery("SELECT * FROM Atable WHERE owner = :1", users.get_current_user().key()) 

或Python的查詢方式:

query = db.Query(Atable) 
results = query.filter('owner =', users.get_current_user()) 
0

如果您只需要爲該用戶獲取一些數據,則python查詢方式可能更容易。

例如,在你的類的東西(db.Model),您可以定義:

user = users.GetCurrentUser() 
results = Something.get_something_by_user(user)