Я работаю над проектом, в котором учитель может ставить оценки своим ученикам, я хочу использовать formset_factory, чтобы учитель мог ставить много оценок одновременно, но я хочу, чтобы учитель видел только своих учеников, а не учеников кто не в его классе.
Я получил это при использовании одной формы, но когда я пытаюсь использовать formset_factory, я получаю эту ошибку:
в этом() получил неожиданный ключевой аргумент "запрос"
Это мой рабочий код в просмотрах:
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
Я получаю неожиданную ошибку аргумента ключевого слова:
в этом() получил неожиданный ключевой аргумент "запрос"
Что я делаю неправильно?
Спасибо за помощь.
Вы передаете это как Параметр 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