2017-04-20 68 views
0

我在Django中有以下兩個表。基於第二個表的字段的Django反向外鍵

class TeamSubscriptions(models.Model): 
    user = models.ForeignKey(User, unique=True) 
    soccer_team = models.ForeignKey(SoccerTeam) 
    .... 
    .... 

    class Meta: 
     db_table = 'soccer_team_subscriptions' 

class MatchSubscriptions(models.Model): 
    team_subscriber = models.ForeignKey(TeamSubscriptions, related_name='soccer_user_matches') 
    soccer_match = models.IntegerField(db_index=True) 
    winning_team_guess = models.CharField(max_length=50, default='') 
    ... 
    ... 

    class Meta: 
     db_table = 'soccer_game_subscriptions' 
     unique_together = ("team_subscriber", "soccer_match") 

我想從Teamsubscriptions獲取所有訂閱者。對於所有這些人,我想從MatchSubscriptions找到相應的 行,並使用特定的soccer_match ID。目的是從第二張表中獲得winning_team_guess的某些特定soccer_match ID。

有沒有辦法做到這一點(反向ForeignKey)爲一個特定的soccer_match ID ..?

回答

0

是的,你可以做到這一點與Django的ORM:

TeamSubscriptions.objects.filter(matchsubscriptions__soccer_match_id=YOUR_ID) 

退房Django的documentation關於與關係查找。

一般來說,如果你想在一個查詢集過濾可以使用related query name默認情況下是等於FK的related name,在你的例子是matchsubscriptions_set,你只需要刪除_set因爲它是由Django的時候產生你使用查詢集。