У меня есть форма django, которая содержит TypedMultipleChoiceField, содержащий группу пользователей. Я получил пользователей из пользовательской модели auth, но я хочу удалить текущего зарегистрированного пользователя из вариантов. Я пытался сделать это, вводя данные запроса в метод init формы, а затем удаляя вошедшего в систему пользователя из списка вариантов, но по какой-то причине форма по-прежнему отображает вошедшего в систему пользователя в списке вариантов. Код ниже:
Views.py
class IndexView(LoginRequiredMixin, generic.ListView, generic.edit.FormMixin):
def get_form_kwargs(self):
kwargs = super(IndexView, self).get_form_kwargs()
kwargs.update({'user': self.request.user})
return kwargs
def get_queryset(self):
return Project.objects.filter(owner=self.request.user.id).order_by('begin_date')
form_class = CreateProject
context_object_name = 'project_list'
template_name = 'projects/project_index.html'
forms.py
class CreateProject(forms.Form):
contributor_id = forms.TypedMultipleChoiceField(choices=list(User.objects.values_list('id','username')),
required=False, empty_value=[])
def __init__(self, *args, **kwargs):
self.user = kwargs.pop("user")
super(CreateProject, self).__init__(*args, **kwargs)
choices = self.fields['contributor_id'].choices
del choices[choices.index((self.user.id, self.user.username))]
Когда я вставляю pdb.set_trace () в метод init и проверяю Состояние полей формы после выполнения удаления все выглядит корректно. Что я делаю не так?
Для справки я использовал this для get_form_kwargs в представлениях и init в формах.