我试图让表单有一个下拉列表,其内容根据用户动态变化。我可以为所有用户提供更改的下拉菜单,但不是针对个人。
我有这样的表格:
forms.py:
class FooForm(ModelForm):
class Meta:
model = Candidate
fields = (
'name',
'foos',
)
labels = {
'name' :_('Name'),
'foos' :_('Chosen Foos'),
}
widgets = {
'name' : TextInput(attrs={'readonly': 'readonly'}),
'foos' : SelectMultiple(),
}
models.py:
class UserInfo (models.Model):
name = models.CharField(max_length = 256, blank = True, default = None)
foos = models.ManyToManyField(Foogroup, blank = True)
如果我按原样使用它,我会得到一个填充了Foogroup所有可能值的下拉列表。
如果我给FooForm一个 init (),我可以将下拉列表设置为一组值,但是这样可以为每个人设置值。
如何动态地将下拉列表的内容设置为User Bob设置的内容,而User Mary只获取为她设置的内容?
我认为这样的事情可能有用:
ajax.py:
def chooseFoos(request):
if request.method != POST:
### 1. do magic to get handle to form's dropdown ###
### 2. fill form's dropdown for request.POST['name'] ###
### 3. highlight a particular entry in the new dropdown ###
else:
...
我不知道如何在chooseFoos()的步骤1或步骤3中执行这些操作。
我尝试构建一个响应,然后将JSON编码为HttpResponse。这适用于' name',但是因为' foos'而被忽略。
感谢您的帮助。