在forms.py中,我将下拉列表定义如下:
DEPARTMENT_CHOICES = (
('SALES', 'sales'),
('TECH', 'tech'),
('HR', 'hr'),)
class MyForm(forms.Form):
department_s = forms.ChoiceField(
widget=forms.SelectMultiple,
choices=DEPARTMENT_CHOICES,
required=True,)
以这种方式工作正常。但我想基于用户名动态地从Google数据存储中检索选择列表。例如,如果user1正在访问表单,则检索其公司的部门列表(比如公司A)。如果user2正在访问,则检索其公司的部门列表(公司B)。用户列表和部门列表存储在数据存储中。我知道我可能需要从数据存储中获取密钥,但实际上并不确定如何正确执行此操作。任何机构都有此案例的示例代码?提前谢谢!
答案 0 :(得分:0)
你可以为这样的表格编写一个init函数
class MyForm(forms.Form):
department_s = forms.ChoiceField(...)
def __init__(self, user, *args, **kwargs):
super(MyForm, self).save(*args, **kwargs)
# create department choice according to user
query = Department.query(<any ndb query>).fetch
DEPARTMENT_CHOICES = [[item.pk, unicode(item)] for item in query]
self.fields['department_s'].choices = DEPARTMENT_CHOICES
如果要初始化表单,必须将用户参数传递给它,并将department_s选项更改为您想要的内容