UpdateIssueForm.__init__() отсутствует 1 требуемый аргумент только для ключевого слова: 'pk'
Я попробовал сделать представление обновления, используя представления на основе классов. Я не знал, как передать этот kwarg в представление. В итоге я получил ошибку. Вот представление и форма View
class UpdateTeacherIssueView(LoginRequiredMixin,UpdateView):
model = TeacherIssue
form_class = UpdateTeacherIssueForm
template_name = 'crud_forms/edit_teacher_issue.html'
success_url = reverse_lazy('view_student') #To be changed
def get_form_kwargs(self):
kwargs = super(UpdateTeacherIssueView, self).get_form_kwargs()
kwargs['school'] = self.request.user.school
kwargs['issuer'] = self.request.user
#kwargs['pk'] = self.request.id
return kwargs
Форма
class UpdateTeacherIssueForm(forms.ModelForm):
"""Edit TeacherIssue Form"""
def __init__(self,*args, pk, school,issuer, **kwargs):
super(TeacherIssueForm, self).__init__(*args, **kwargs)
self.fields['issuer'].initial = issuer
self.fields['book_id'].queryset = Books.objects.filter(school=school,no_of_books=1).select_related('subject')
self.fields['borrower_teacher'].initial = pk
class Meta:
model = TeacherIssue
fields = ['issuer','book_id','borrower_teacher','issue_date']
widgets = {
'borrower_teacher':forms.TextInput(attrs={"class":'form-control','type':'hidden'}),
"issue_date":forms.TextInput(attrs={"class":"form-control"}),
'issuer':forms.TextInput(attrs={"class":'form-control','type':'hidden'}),
'book_id':Select2Widget(attrs={'data-placeholder': 'Select Book','data-width': '100%'},)
}
ваша init функция в ModelForm не очень хорошая:
def __init__(self, pk, school,issuer,*args, **kwargs):
super(UpdateTeacherIssueForm, self).__init__(*args, **kwargs)
self.fields['issuer'].initial = issuer
self.fields['book_id'].queryset = Books.objects.filter(school=school,no_of_books=1).select_related('subject')
self.fields['borrower_teacher'].initial = pk
*args и **kwargs должны быть размещены в конце аргументов функции. и В вызове super вы должны установить имя вашего текущего класса.
Вы должны откомментировать kwargs['pk'] = self.request.id
Не уверен, что проблема в этом: вы не показываете никакой ошибки.