Неожиданный аргумент ключевого слова при использовании formset_factory

Я работаю над проектом, в котором учитель может добавлять оценки своим ученикам, я хочу использовать formset_factory, чтобы учитель мог добавлять много оценок одновременно, но я хочу, чтобы учитель видел только своих учеников, а не учеников, которые не в его классе.

Я получил его при использовании одной формы, но когда я пытаюсь использовать formset_factory, я получаю эту ошибку:

init() получил неожиданный аргумент ключевого слова 'request'

Вот мой рабочий код в представлениях:

  class AddNotaBlock(FormView):

template_name='notas/insertar_nota.html'
   
form_class= NotaCreateFormTeacher
success_url= reverse_lazy('home')

def get_form_kwargs(self):
    """ Passes the request object to the form class.
     This is necessary to only display members that belong to a given user"""

    kwargs = super(AddNotaBlock, self).get_form_kwargs()
    kwargs['request'] = self.request
    return kwargs

в формах:

  class NotaCreateFormTeacher(ModelForm):

def __init__(self, *args, **kwargs):
    

    self.request = kwargs.pop('request')
    super(NotaCreateFormTeacher, self).__init__(*args, **kwargs)
    usuario=self.request.user
    profe=Teacher_profile.objects.get(profesor=usuario)
    colegio=profe.colegio
    self.fields['Username'].queryset = Student_profile.objects.filter(
        colegio=colegio)
    



class Meta:
    model = Nota
    fields = ('Username', 'nota', 'colegio')
    widgets= {'colegio':HiddenInput()}



  formset=formset_factory(NotaCreateFormTeacher, extra=2)

когда я использую:

  form_class= NotaCreateFormTeacher

Все работает (но отображается только форма). Если я использую:

  form_class=formset

Я получаю ошибку неожиданного аргумента ключевого слова:

init() получил неожиданный аргумент ключевого слова 'request'

Что я делаю не так?

Спасибо за помощь.

Вы передаете это как form_kwargs=… параметр [Django-doc], так:

class AddNotaBlock(FormView):
    template_name = 'notas/insertar_nota.html'
    form_class = formset
    success_url = reverse_lazy('home')

    def get_form_kwargs(self):
        kwargs = super().get_form_kwargs()
        kwargs.setdefault('form_kwargs', {})['request'] = self.request
        return kwargs
Вернуться на верх