Python Django表单-传递值

Python Django表单-传递值,python,django,Python,Django,我有以下表格,似乎不能使用“self.currentSelectedTeam1”作为team1的初始值,如底部所示。当我尝试此操作时,会出现以下错误: team1 = forms.ModelChoiceField(queryset=StraightredTeam.objects.none(), empty_label=None,initial=self.curentSelectedTeam1) NameError: name 'self' is not defined 表格: 非常感谢您的帮助

我有以下表格,似乎不能使用“self.currentSelectedTeam1”作为team1的初始值,如底部所示。当我尝试此操作时,会出现以下错误:

team1 = forms.ModelChoiceField(queryset=StraightredTeam.objects.none(), empty_label=None,initial=self.curentSelectedTeam1)
NameError: name 'self' is not defined
表格:


非常感谢您的帮助,Alan。

这不起作用,因为
team1
team2
字段是在调用
\uuu init\uuu
之前创建的,因为它们是实例成员

这意味着
self.curentSelectedTeam1
self.curentSelectedTeam2
还不可用,很可能
None

为了在表单上设置初始值,您需要在实例化表单本身时这样做

team1_pk = 0
team2_pk = 1

form = SelectTwoTeams(initial={'curentSelectedTeam1': team1_pk, 'curentSelectedTeam2': team2_pk})

您需要删除当前的
\uuuuu init\uuuu
覆盖或调用
super()
允许将初始值传递给表单的默认构造函数。

这不起作用,因为字段
team1
team2
是在调用
之前创建的,因为它们是实例成员

这意味着
self.curentSelectedTeam1
self.curentSelectedTeam2
还不可用,很可能
None

为了在表单上设置初始值,您需要在实例化表单本身时这样做

team1_pk = 0
team2_pk = 1

form = SelectTwoTeams(initial={'curentSelectedTeam1': team1_pk, 'curentSelectedTeam2': team2_pk})

您需要删除当前的
\uuu init\uuu
覆盖或调用
super()
以允许将初始值传递给表单的默认构造函数。

问题在于team1和team2变量中的
self
关键字。 问题是它们在类级别上,而self在实例级别上可用(在方法内部,不包括静态方法和类方法)

要使其正常工作,您需要对
self.fields['team1']执行相同的操作。queryset

self.fields['team1'].initial = self.curentSelectedTeam1

\uuuu init\uuuu
方法内部。

问题在于team1和team2变量中的
self
关键字。 问题是它们在类级别上,而self在实例级别上可用(在方法内部,不包括静态方法和类方法)

要使其正常工作,您需要对
self.fields['team1']执行相同的操作。queryset

self.fields['team1'].initial = self.curentSelectedTeam1

\uuuuu init\uuuuuu
方法中。

很抱歉,我不能同时给出正确答案。两种方法都很有效,我非常感谢你的帮助。非常感谢,艾伦。很抱歉,我不能同时给出两个正确的答案。两种方法都很有效,我非常感谢你的帮助。非常感谢,艾伦。