mfa*_*con 5 django django-forms
我希望表单仅在 ChoiceField 中显示当前用户的帐户。我尝试执行以下操作,但不起作用。
编辑:抱歉,我忘了提及我添加的“if kwargs”,因为 TransForm() 没有显示任何字段。我想这是错误的,但我不知道另一种方式。
视图.py:
def in(request, account):
if request.method == 'POST':
form = TransForm(request.user, data=request.POST)
if form.is_valid():
...
else:
form = TransForm()
context = {
'TranForm': form,
}
return render_to_response(
'cashflow/in.html',
context,
context_instance = RequestContext(request),
)
Run Code Online (Sandbox Code Playgroud)
表格.py:
class TransForm(ModelForm):
class Meta:
model = Trans
def __init__(self, *args, **kwargs):
super(TransForm, self).__init__(*args, **kwargs)
if kwargs:
self.fields['account'].queryset = Account.objects.filter(user=args[0])
Run Code Online (Sandbox Code Playgroud)
当请求为 NO post 请求时,您还需要正确初始化表单:
if request.method == 'POST':
form = TransForm(user=request.user, data=request.POST)
if form.is_valid():
...
else:
form = TransForm(user=request.user)
...
Run Code Online (Sandbox Code Playgroud)
此外,我建议在调用超类的构造函数时删除新参数:
class TransForm(ModelForm):
class Meta:
model = Trans
def __init__(self, *args, **kwargs):
user = kwargs.pop('user')
super(TransForm, self).__init__(*args, **kwargs)
self.fields['account'].queryset = Account.objects.filter(user=user)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2767 次 |
| 最近记录: |