Разрежьте UIImage в круг

Нет, запрос не передается в ModelForm. Вы должны сделать что-то вроде этого в своем представлении:

form = BookSubmitForm()
form.fields['book'].queryset = Book.objects.filter(owner=request.user)
# pass form to template, etc

Как вы сказали, часто бывает проще инкапсулировать это в объект Form, особенно если у вас есть несколько полей, которые потребуют отфильтрованных запросов. Чтобы сделать это, переопределите формы __init__() и пусть он принимает kwarg request:

class BookSubmitForm(ModelForm):
    def __init__(self, *args, **kwargs):
        self.request = kwargs.pop("request")
        super(BookSubmitForm, self).__init__(*args, **kwargs)
        self.fields["book"].queryset = Book.objects.filter(owner=self.request.user)
        self.fields["whatever"].queryset = WhateverModel.objects.filter(user=self.request.user)

Затем просто передавайте запрос всякий раз, когда вы создаете экземпляр BookSubmitForm в своем представлении:

def book_submit(request):
    if request.method == "POST":
        form = BookSubmitForm(request.POST, request=request)
        # do whatever
    else:
        form = BookSubmitForm(request=request)
    # render form, etc
31
задан ayaio 6 January 2018 в 09:19
поделиться