2017-04-20 18 views
0

私はDjangoに次の2つのテーブルを持っています。2番目のテーブルのフィールドに基づいて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に変更したいと考えています。その目的は、特定のsoccer_match IDの2番目のテーブルからwinning_team_guessを取得することです。

特定のsoccer_match IDに対してこれを行う方法はありますか?

答えて

0

はい、あなたはDjangoのORMでそれを行うことができます。

TeamSubscriptions.objects.filter(matchsubscriptions__soccer_match_id=YOUR_ID) 

関係を持つルックアップについてジャンゴdocumentationをチェックしてください。

一般に

あなたはFKのrelated nameに等しいデフォルトであるrelated query nameを使用することができますクエリセットでフィルタリングする場合は、あなたの例では、それはDjangoのときによって生成されたとして、あなただけの_setを削除する必要があり、matchsubscriptions_setですクエリーセットを使用します。

関連する問題