2016-09-22 71 views
1

我有以下兩種模式:Django的select_related查詢

class StraightredFixture(models.Model): 
    fixtureid = models.IntegerField(primary_key=True) 
    home_team = models.ForeignKey('straightred.StraightredTeam', db_column='hometeamid', related_name='home_fixtures') 
    away_team = models.ForeignKey('straightred.StraightredTeam', db_column='awayteamid', related_name='away_fixtures') 
    fixturedate = models.DateTimeField(null=True) 
    fixturematchday = models.ForeignKey('straightred.StraightredFixtureMatchday', db_column='fixturematchday') 
    hometeamscore = models.IntegerField(null=True) 
    awayteamscore = models.IntegerField(null=True) 
    soccerseason = models.ForeignKey('straightred.StraightredSeason', db_column='soccerseasonid', related_name='fixture_season') 


    def __unicode__(self): 
     return self.fixtureid 

    class Meta: 
     managed = True 
     db_table = 'straightred_fixture' 

class UserSelection(models.Model): 
    userselectionid = models.AutoField(primary_key=True) 
    campaignno = models.CharField(max_length=36,unique=False) 
    user = models.ForeignKey(User, related_name='selectionUser') 
    teamselection1or2 = models.PositiveSmallIntegerField() 
    teamselectionid = models.ForeignKey('straightred.StraightredTeam', db_column='teamselectionid', related_name='teamID') 
    fixtureid = models.ForeignKey('straightred.StraightredFixture', db_column='fixtureid') 


    class Meta: 
     managed = True 
     db_table = 'straightred_userselection' 

我使用下面的查詢:

prevWeekTeams = UserSelection.objects.select_related().filter(soccerseason=1025,fixturematchday=5,user=currentUserID).order_by('teamselection1or2') 

當它運行我得到以下錯誤:

Cannot resolve keyword 'soccerseason' into field. Choices are: campaignno, fixtureid, fixtureid_id, teamselection1or2, teamselectionid, teamselectionid_id, user, user_id, userselectionid 

我知道這是行不通的,但我不太明白如何引用夾具表中的soccerseason。任何幫助,將不勝感激。非常感謝,艾倫。

PS

如果您需要鏈接的其他兩個型號只是讓我知道。

回答

1

你只需要對國外模式的字段進行篩選與你的情況fixtureid__soccerseason該格式

field-that-reference-to-foreign-model__foreign-model-field。最好描述的地方是The docs

你應該做的是

prevWeekTeams = UserSelection.objects.filter(fixtureid__soccerseason=1025,fixtureid__fixturematchday=5,user=currentUserID).order_by('teamselection1or2') 
+0

我是如此接近。我一直忘記雙下劃線:(10分鐘後回答。 –