我希望表單僅顯示當前用戶在ChoiceField中的帳戶。我試圖做到以下,但它不起作用。限制基於用戶的字段選擇
編輯:對不起,我忘了提及因爲TransForm()沒有顯示任何字段而添加的「if kwargs」。我想這是錯誤的,但我不知道另一種方式。
views.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),
)
forms.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])
'不起作用'是什麼意思?你沒有選擇?你太多了? – 2010-11-03 22:54:05
並嘗試使用.choices而不是.queryset,因爲queryset可能已經被那個點計算了 – 2010-11-03 22:54:51
我的意思是我得到所有帳戶,而不僅僅是用戶帳戶。 – mfalcon 2010-11-03 23:07:47