Передать данные в поле ChoiceField формы django

Рейтинг: 1Ответов: 1Опубликовано: 16.02.2023

Я создал формы и мне нужно заполнить значения полей ChoiceField в зависимости от авторизованного user. Т.е. вывести в список категории для конкретного пользователя.

Во views.py я получаю пользователя request.user и могу сделать выборку категорий из базы для этого пользователя

Category.objects.filter(user=self.request.user)

А как быть, если выборка формируется в отдельном файле forms.py?

class FilterForm(forms.Form):
    category = TreeNodeChoiceField(queryset=Category.objects.all())

Ответы

▲ 1

Нашел ответ на этом форуме.

class FilterForm(forms.Form):
    def __init__(self, *args, **kwargs):
        self.user = kwargs.pop('user', None)
        super(FilterForm, self).__init__(*args, **kwargs)
        self.fields['storage'].queryset = Category.objects.filter(user=self.user)

Во views.py

context['things'] = FilterForm(self.request.GET, user = self.request.user)