Как получить экземпляр пользователя в forms.py?
Такая проблема, хочу получить в форму записи уже имеющиеся в БД конкретного пользователя и сделать их отображения выбором (ChoiceField).
forms.py
class TransfersForm(forms.Form):
def __init__(self, *args, **kwargs):
self.user = kwargs.pop('user', None)
super(TransfersForm, self).__init__(*args, **kwargs)
account_1 = forms.ModelChoiceField(queryset=Bank_Account.objects.filter(client=self.user), label='С какого счёта')
account_2 = forms.ModelChoiceField(queryset=Bank_Account.objects.filter(client=self.user), label='На какой счёт')
amount = forms.IntegerField(label='Сумма перевода')
И во views.py при создании формы я пытаюсь передать в форму юзера
views.py
def transfers (request):
if request.method == 'POST':
form = TransfersForm(request.POST, user = request.user)
else:
form = TransfersForm(user = request.user)
return render (request, 'bank/transfers.html', {'menu': menu, 'form': form, 'title': 'Переводы между счетами'})
Но так не получается django выдает ошибку что в forms.py, self.user не определён. Если в forms.py я прописываю в полях account_1 и account_2
forms.ModelChoiceField(queryset=Bank_Account.objects.all(), label='На какой счёт')
то так работает и он возвращает все записи модели Bank_Account, но мне нужны только записи юзера который сделал запрос к форме. Подскажите как можно это реализовать.
Решил проблему следующим образом
forms.py
class TransfersForm(forms.Form):
def __init__(self, *args, **kwargs):
self.user = kwargs.pop('user', None)
super(TransfersForm, self).__init__(*args, **kwargs)
self.fields['account_1'].queryset = Bank_Account.objects.filter(client=self.user)
self.fields['account_2'].queryset = Bank_Account.objects.filter(client=self.user)
account_1 = forms.ModelChoiceField(queryset=None, label='С какого счёта')
account_2 = forms.ModelChoiceField(queryset=None, label='На какой счёт')
amount = forms.IntegerField(label='Сумма перевода')
views.py без изменений.