【发布时间】:2018-08-13 15:48:04
【问题描述】:
我正在尝试创建一个静态共享函数列表及其描述以显示在 Django form MultipleChoiceField 中。
我希望它是可扩展的,以防我稍后添加更多文件选项,但我不想在多个地方更改代码,除了编写新函数并将其添加到我的 CHOICES 列表中tasks.py 文件。
我似乎无法在课堂外引用我的CHOICES 列表中的函数(a、b 和 c)。我在列表中尝试了TaskClass.a,但我一直收到错误:
Unresolved reference 'a'
最好的方法是什么?
tasks.py
CHOICES = [
('This is function A.', a),
('This is function B.', b),
('This is function C.', c)
]
class TaskClass():
def a(self):
...
def b(self):
...
def c(self):
...
form.py
from tasks import CHOICES
class MyForm(forms.Form):
function_choices = []
# Convert function choices to list format needed for MultipleChoiceField
for i, tuple in enumerate(CHOICES):
function_choices.append((i+1, tuple[0]))
forms.MultipleChoiceField(
choices=function_choices,
widget=forms.CheckboxSelectMultiple,
label='Functions to Call:'
)
【问题讨论】:
标签: python django forms django-forms extensibility