Передать переменную из вида в форму в Django - PullRequest
0 голосов
/ 03 июля 2019

Я строю простую систему управления задачами, в которой у Компании может быть несколько проектов, а в каждой компании есть сотрудники.Мне нужна форма, которая позволяет менеджерам добавлять пользователей в проекты с ограничением на то, что доступные пользователи принадлежат компании.

Я передаю переменную company_pk из представления в форму, но я не уверен, какустановить / получить доступ к переменной за пределами init finction.

class AddUserForm(forms.Form):
    def __init__(self, company_pk=None, *args, **kwargs):
        """
        Intantiation service.
        This method extends the default instantiation service.
        """
        super(AddUserForm, self).__init__(*args, **kwargs)
        if company_pk:
            print("company_pk: ", company_pk)
            self._company_pk = company_pk

    user = forms.ModelChoiceField(
        queryset=User.objects.filter(company__pk=self._company_pk))
form = AddUserForm(company_pk=project_id)

Как уже упоминалось, я хочу отфильтровать пользователей только по тем, которые принадлежат данной компании, однако я делаюне знаю, как получить доступ к company_pk за пределами init .Я получаю сообщение об ошибке: NameError: имя 'self' не определено

Ответы [ 2 ]

1 голос
/ 03 июля 2019
class AddUserForm(forms.Form):
    def __init__(self, company_pk=None, *args, **kwargs):
        super(AddUserForm, self).__init__(*args, **kwargs)
        self.fields['user'].queryset = User.objects.filter(company__pk=company_pk)

    user = forms.ModelChoiceField(queryset=User.objects.all())
0 голосов
/ 03 июля 2019

Вы должны использовать self.fields для переопределения пользовательского набора запросов

class AddUserForm(forms.Form):
    def __init__(self, company_pk=None, *args, **kwargs):
        super(AddUserForm, self).__init__(*args, **kwargs)
        if company_pk:
            self.fields['user'].queryset = User.objects.filter(company__pk=company_pk))

для получения дополнительной информации об этом. проверить это Как динамически фильтровать набор запросов ModelChoice в ModelForm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...