2013-12-19 78 views
-1

我想通過當前用戶來過濾下面的模型,但我似乎無法弄清楚。我認爲這是一個簡單的解決方案,但我嘗試的一切都失敗了。這不是我的AUTH_PROFILE_MODULE。我只想讓當前登錄的用戶能夠篩選出他們所有的首選組織。Django身份驗證:由當前用戶從外鍵查詢

class UserOrgConnections(models.Model): 
    user = models.ForeignKey(User) 
    orgs = models.ManyToManyField(Organizations) 
+0

究竟是什麼失敗?有一些錯誤信息? –

+0

正在編寫的內容正在工作。我只是無法弄清楚如何編寫我想要的查詢。我可以嘗試一些不同的事情,並顯示一些錯誤消息和嘗試,但我認爲我的問題的答案應該是簡單的,即使有點經驗的開發人員(我不是)。我在搜索中發現的所有內容都假定您將從AUTH_PROFILE_MODULE中提取變量,但事實並非如此。我只是在查詢時遇到困難。如果是這樣,我會這樣做\t \t'county = user.county.all()',但事實並非如此。 –

+0

我應該說'orgs = user.orgs.all() –

回答

0

看起來你要過濾的UserOrgConnections模型由當前用戶,然後訪問orgs值。

在您的視圖中,您可以通過請求變量訪問當前用戶,如下所示:request.user

這裏是讓所有的登錄用戶的orgs值的最簡單的方法:

user = request.user 
userorgs = UserOrgConnections.objects.filter(user = user) 
# at this point, you have all instances of UserOrgConnections 
# for which the current user is the user value 

print userorgs.values('orgs')  # as ValuesQuerySet 
print [x.orgs for x in userorgs] # as Python list 

如果您需要任何的澄清,還是我看錯了,就是你試圖做,讓我知道在評論中。

+0

這是完美的!如何讓我的'org_name'顯示在列表中而不是主鍵上 - 如果您不介意? –

+0

如果「組織」模型中字段的名稱是「org_name」,那麼您可以在print [xorgs.org_name for useruros中的x]。在這種情況下,'orgs'值是另一個模型的實例,因此可以像訪問UserOrgConnections實例的值一樣訪問它們的屬性。讓我知道這是否按照您希望的方式實現。 – sgarza62

+0

我感到很傻,因爲我不知道如何利用你最後的建議。我實際上需要拿出給出的結果,並將它們過濾爲幾個不同的查詢。雖然你的建議可能完全符合我的要求,但我不確定如何將該打印語句分配給一個變量,然後我可以過濾以創建多個不同的列表。例如,當我完成時,我需要能夠使用類似於以下的語句對其進行過濾。 '\t newspolitics = MyNews.objects.filter(news_orgs = userorgs).filter(news_orgs__org_type__pk = 5).order_by(' - date')' –