我有一个Django表单类中定义喜欢这Models
:Django的ModelChoiceField:过滤查询设置和设置默认值作为对象
class AccountDetailsForm(forms.Form):
...
adminuser = forms.ModelChoiceField(queryset=User.objects.all())
该工程确定,但它有一些局限性,所以我似乎无法解决:
(1)I想用的查询集的过滤器,基于传递给形式的可变accountid
,像这样:
User.objects.filter(account=accountid)
这在模型中不起作用,因为accountid
当然不能作为变量传递。
由此可见,queryset
必须以某种方式在Views
定义,但据我可以看到它在Form类必填字段。
(2)我想提出的AccountDetailsForm
在数据库中的对象,我可以在Views
这样选择默认的选择:
User.objects.filter(account=accountid).filter(primary_user=1)
我已经试过指定管理用户的默认形式值,(这与其他标准的表单字段的作品,像CharField
):
adminuser = User.objects.filter(account=accountid).filter(primary_user=1)
...
form = AccountDetailsForm({'adminuser': adminuser})
return render_to_response('accounts/edit/accountdetails.html',
{'form': form, 'account':account})
,但没有运气。
鉴于我需要的灵活性,我是否应该使用ModelChoiceField
以外的东西?
谢谢。
嗨场,感谢您的回复。在视图中设置查询集运行良好。我无法解决的部分是将ModelChoiceField的绑定表单值(而不是默认值)设置为_User.objects.filter(account = accountid).filter(primary_user = 1)_。谢谢。 – eli 2011-03-16 18:52:42