Как передать дополнительную информацию в форму в Django
У меня есть следующая форма, которая должна возвращать набор запросов Cashpool
, где cashpool__name=request.user.company.cashpool
. Чтобы выполнить правильный запрос, ему необходима информация из представления.
# views.py
class AddAccountForm(forms.Form):
# The entity on whose behalf the account shall be added
company = forms.ModelChoiceField(queryset=Company.objects.get(name=....))
...
Есть ли способ передать дополнительный аргумент форме в представлении, чтобы сделать объект пользователя доступным в форме, чтобы она могла как-то получить правильный набор запросов?
# forms.py
def add_account(request):
# Return the form on get request
if request.method == 'GET':
form = AddAccountForm()
...
Вот как можно сделать, чтобы передать некоторые отфильтрованные исходные данные в форму в Django.
Просто переопределите атрибут base_fields
формы.
views.py
def add_account(request):
if request.method == 'GET':
# Retrieve the form initial value
company_name = request.user.company.name
cashpool= Cashpool.objects.get(name=company_name)
# Override the AddAccountForm company field
AddAccountForm.base_fields['company'] = forms.ModelChoiceField(
queryset=cashpool)
# Instantiate the form now
form = AddAccountForm()
# Other code here ...
NB : Я использовал forms.ModelChoiceField
в коде, но вы можете использовать другое поддерживаемое поле формы.