2016-09-22 69 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分钟后回答。 –