2012-11-05 46 views
1

在我的django應用程序中,我有一個模型「匹配」,鏈接到我的模型「用戶」與外鍵。我也有一個函數,它給了我一個「live_matches」(與當前播放的匹配項)的query_set。從其他query_set獲取query_set。 Django

我試圖得到的是一個query_set與「live_matches」的所有用戶。

這裏是我的models.py:

class LiveMatchManager(models.Manager): 
    def get_query_set(self): 
     now = timezone.localtime(timezone.now()) 
     queryset = super(LiveMatchManager, self).get_query_set() 
     return queryset.filter(match__date_start__lte=now, match__date_end__gte=now) 

class Match(models.Model): 
    user = models.ForeignKey(User) 
    date_start = models.DateTimeField() 
    date_end = models.DateTimeField() 

# Managers 
objects = models.Manager() 
live_matches = LiveMatchManager() 

我想有是給我鏈接到一個「live_match」用戶的query_set的功能,我沒有找到怎麼做。

謝謝你的幫助。

回答

0
#returns all users, linked to live_matches 
>>>User.objects.filter(match__in=Match.live_matches.all()) 
[<User: user1>, <User: user2>, <User: user3>] 
+0

非常感謝,它的工作原理。我只是有一個問題。我有一個UserProfile模型(一個自定義配置文件),通過OnetoOneField鏈接到模型用戶。我想在UserProfile而不是User(UserProfile.object.filter(...))的基礎上保留「user = models.ForeignKey(User)」的查詢集。你有什麼想法如何做到這一點?謝謝。 –

+0

試試'UserProfile.objects.filter(user__match__in = Match.live_matches.all())' –

+0

它可以很好地工作。非常感謝您的幫助。 –