2009-04-08 146 views
0

這可能是一個相當不錯的問題,但我無法讓它工作。django queryset:select with auth_user

,如果我有以下型號:

from django.contrib.auth.models import User 

class Entry(models.Model): 
    title = models.CharField() 
    users = models.ManyToManyField(User) 

我將如何獲得在當前登錄用戶的所有入門標題的列表? 類似於:

list = Entry.objects.filter(users__????__contains = request.user) 

在此先感謝幫助我進步。

回答

3

關閉我的頭頂,我認爲這可能是沿着線:

list = Entry.objects.filter(users__id__exact = request.user.pk) 

list = Entry.objects.filter(users = request.user) 

我相信,無論是那些應該工作。有關many to many relationships的更多信息,請查看Django文檔。

+0

談論失蹤的明顯,謝謝你的洞察力 – 2009-04-08 20:23:38

1

你應該能夠做到這一點:

Entry.objects.filter(users=request.user) 

Django會挑選出正確的連接與M2M表並添加一個WHERE子句限制它的當前用戶。

1
Entry.objects.filter(users=request.user) 

並且在您的代碼中有錯誤。 CharField要求max_length

+0

不錯的觀察,我刪除它,以解決這個例子沒有想到這個 – 2009-04-08 20:24:34

2

我發現以下內容更加優雅,但取決於您。

request.user.entry_set.all() 

編輯:你不應該需要導入Entry模型類每次你想找到與用戶相關的條目。使用user.entry_set可以避免這種麻煩。