Tengo el siguiente formulario que debería devolver un conjunto de consultas de Cashpool donde cashpool__name=request.user.company.cashpool . Para ejecutar la consulta correcta, necesita información de la vista.
# views.py class AddAccountForm(forms.Form): # The entity on whose behalf the account shall be added company = forms.ModelChoiceField(queryset=Company.objects.get(name=....)) ...¿Hay alguna forma de pasar un argumento adicional al formulario en la vista para que el objeto de usuario esté disponible en el formulario para que pueda obtener el conjunto de consultas correcto de alguna manera?
# forms.py def add_account(request): # Return the form on get request if request.method == 'GET': form = AddAccountForm() ...Así es como puede hacer para pasar algunos datos iniciales filtrados a un formulario en Django. Simplemente anule el atributo base_fields del formulario.
vistas.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: utilicé forms.ModelChoiceField en el código, pero puede usar otro campo de formulario compatible.