我试图使用原始查询从数据库表中获取choicefield的值。我收到了通知
,而不是获取值NameError未被用户代码处理。
任何帮助都将不胜感激。
forms.py
class SearchForm(forms.Form):
def get_names():
cursor = connection.cursor()
get_query = str("SELECT distinct name from T_STUDENT")
cursor.execute(get_query)
results = cursor.fetchall()
names = []
i=0
for row in results:
names[i]=row[0]
i+=1
return names
def names():
data = get_names()
i=0
names= []
for key,value in data:
names.append(('i',value))
i+=1
return names
validflg = forms.ChoiceField(label=("Names:"),
choices = names(),
widget = forms.Select({'class':'form-control'}))
答案 0 :(得分:0)
创建课程时,未定义names
功能。您有两个选择:您可以创建支持函数,也可以将逻辑添加到构造函数中。
这是后者的样子:
class SearchForm(forms.Form):
def get_names(self):
cursor = connection.cursor()
get_query = str("SELECT distinct name from T_STUDENT")
cursor.execute(get_query)
results = cursor.fetchall()
names = []
i=0
for row in results:
names[i]=row[0]
i+=1
return names
def names(self):
data = self.get_names()
i=0
names= []
for key,value in data:
names.append(('i',value))
i+=1
return names
def __init__(self,*args, **kwargs):
self.fields['validflg'] = forms.ChoiceField(label=("Names:"),
choices = self.names(),
widget = forms.Select({'class':'form-control'}))
super(SearchForm, self).__init__(*args, **kwargs)
你在Python中犯了一些基本错误。
def names():
这需要包括对象本身的引用:
def names(self):
然后你不能只调用方法,你也需要将它们附加到引用上。这不起作用:
data = get_names()
但这会:
data = self.get_names()