0
对不起,如果它是一个坏名称的标题,但我不知道如何解释这一点。我想填写队长的表格,但是需要有一个查询集过滤器,所以您只能从用户的FantasyTeam中选择玩家。Django - 从另一个模型中过滤对象
我有型号如下:
class Player(models.Model):
player_id = models.IntegerField(primary_key=True)
team = models.ForeignKey(Team)
player_name = models.CharField(max_length=140)
position = models.CharField(max_length=10)
first_name = models.CharField(max_length=70)
last_name = models.CharField(max_length=70)
known_name = models.CharField(max_length=70,blank=True)
birth_date = models.DateField('birth date')
weight = models.IntegerField()
height = models.IntegerField()
jersey_num = models.IntegerField()
real_position = models.CharField(max_length=25)
join_date = models.DateField('join date')
country = models.CharField(max_length=30)
value = models.DecimalField(max_digits=3,decimal_places=1)
is_active = models.BooleanField(default=False)
def __str__(self):
return '%s (%s)' % (self.player_name,self.value)
class FantasyTeam(models.Model):
FANTASY_TEAM_ID = models.AutoField(primary_key=True)
team_name = models.CharField(max_length=25)
player1 = models.ForeignKey(Player, related_name='csplayer1')
player2 = models.ForeignKey(Player, related_name='csplayer2')
player3 = models.ForeignKey(Player, related_name='csplayer3')
player4 = models.ForeignKey(Player, related_name='csplayer4')
player5 = models.ForeignKey(Player, related_name='csplayer5')
player6 = models.ForeignKey(Player, related_name='csplayer6')
player7 = models.ForeignKey(Player, related_name='csplayer7')
player8 = models.ForeignKey(Player, related_name='csplayer8')
player9 = models.ForeignKey(Player, related_name='csplayer9')
player10 = models.ForeignKey(Player, related_name='csplayer10')
player11 = models.ForeignKey(Player, related_name='csplayer11')
player_sub_gk = models.ForeignKey(Player, related_name='cssubgk')
player_sub_1 = models.ForeignKey(Player, related_name='cssub1')
player_sub_2 = models.ForeignKey(Player, related_name='cssub2')
player_sub_3 = models.ForeignKey(Player, related_name='cssub3')
def __str__(self):
return '%s' % (self.team_name)
class Captains(models.Model):
fantasy_team = models.OneToOneField(ClassicSeasonFantasyTeam,primary_key=True)
captain = models.ForeignKey(Player, related_name='cscaptain')
vice_captain = models.ForeignKey(Player, related_name='csvicecaptain')
#Associates a user with a FantasyTeam
class ClassicSeasonUserTeam(models.Model):
CS_USER_TEAMS_ID = models.AutoField(primary_key=True)
fantasy_team = models.ForeignKey(ClassicSeasonFantasyTeam)
user = models.ForeignKey(User)
total_score = models.IntegerField(default=0)
season = models.ForeignKey(Season)
def __str__(self):
return '%s' % (self.user.username)
我怎样才能实现查询集过滤器?
forms.py
class CaptainsForm(ModelForm):
class Meta:
model = ClassicSeasonCaptains
def __init__(self,*args,**kwargs):
super(ClassicSeasonCaptains,self).__init__(*args,**kwargs)
#filter to players that are only in the user's fantasy team
self.fields['captain'].queryset = ClassicSeasonFantasyTeam.objects.filter()????
self.fields['vice_captain'].queryset = ?????
感谢您的建议。在不改变模型结构的情况下,是否有可能过滤处于幻想团队中的玩家?查看您发布的其他问题的答案后,我仍然觉得很困难 – Matchday 2014-09-30 14:59:10