取决于Django中其他功能的choicefield

时间:2018-12-20 15:49:25

标签: python-3.x django-forms django-1.9

我尝试创建一个依赖于其他功能的动态ChoiceField。

例如:在我的模型中,团队是两个玩家的联合。当球员想参加总冠军时,他需要选择一支球队。 (玩家A非常受欢迎,以至于他在许多团队中,他必须选择其中一个)。

第一步,我只想列出所有包含在Teams中(从玩家1或玩家2开始)plyerA的团队。

在第二步中,我要删除所有其他玩家已经与另一玩家进行比赛的团队。 models.py

class Team(models.Model):
    Name=models.CharField()
    Player1=models.ForeignKey(User,related_name='Player1')
    Player2=models.ForeignKey(User,related_name='Player2')

forms.py

class AddTeamInConcours(forms.Form):
    Team = forms.ModelChoiceField( f(userId))

我尝试:

  • 在构造函数中使用Q对象,但不起作用:'(

  • 创建一个列表并用此列表填充choiceField,但它也不起作用


已解决

第一步,我找到了解决方案。我填写这样的选择:

aForm.fields['Team'].queryset=aForm.fields['Team'].queryset.filter(Q(Player1=userId)|Q(Player2=userId))

第二步...我发现了如何将两者合而为一。我在视图中创建了一个带有参数的函数,该函数会返回一个列表。在像这样在过滤器中使用此列表之后:

aForm.fields['Team'].queryset=aForm.fields['Team'].queryset.filter(id__in = lTeam)

我的观点很接近! :)

0 个答案:

没有答案