我尝试创建一个依赖于其他功能的动态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)
我的观点很接近! :)