2017-04-20 69 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的时候产生你使用查询集。