2011-03-26 73 views
0

我需要獲得外鍵的查詢集,但我一直無法弄清楚如何。獲取外鍵的查詢集

我有以下型號:

class Contact(models.Model): 
    owner = models.ForeignKey(CustomUser, related_name='contact_set') 
    referenced = models.ForeignKey(CustomUser, related_name='contacted_by_set') 

然後,對於當前用戶,我需要檢索引用的用戶一個查詢集。下面退貨聯繫對象,我需要的用戶對象:

print request.user.contact_set.all() 

而且,它需要一個queryset的,因爲它會通過一個ModelMultipleChoiceField使用。

感謝

回答

2
User.objects.filter(contacted_by_set__owner=request.user) 

應該這樣做

+0

+1良好的通話。這絕對是一個更好的解決方案。我有一個腦屁。 – 2011-03-26 18:16:49

1

王子與語法正確的,但我想指出,這實際上是一個多對多的關係。如果你已經證明了完整的聯繫人定義,並沒有任何其他的表,你可以錯過了整個表,只是直接定義上CustomUser的關係:

contacts = ManyToManyField('self', related_name='referenced_users') 

或者,如果你有其他領域在聯繫人上,您可以在該ManyToManyField上添加through='Contact'

在這兩種情況下,查詢就變成了:

request.user.referenced_users.all()