I would like to make a queryset where the current user is used as a filter in a ModelForm:
class BookSubmitForm(ModelForm):
book = forms.ModelChoiceField(queryset=Book.objects.filter(owner=request.user),)
...
Does Django pass the request to the form? Is it good practice? How can I use the request? (of course the name request is not defined)
Edit:
I tried another solution which is to call the form in the view passing it the request:
form = BookSubmitForm(request)
and then in the form I use this:
class BookSubmitForm(ModelForm):
def __init__(self, request, *args, **kwargs):
super(BookSubmitForm, self).__init__(*args, **kwargs)
self.fields["library"].queryset = Library.objects.filter(owner=request.user)
It works and the code is in the form. Now I'm not sure it's the best solution, could it be improved?