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

Не уверен, что проблема в этом: вы не показываете никакой ошибки.

Вернуться на верх