Django - __init__() отсутствует 1 необходимый позиционный аргумент: 'request'
У меня следующая ошибка:
CompareFormTransporterCompany.__init__() missing 1 required positional argument: 'request'
Вот моя форма в forms.py:
class CompareFormTransporterCompany(forms.ModelForm):
file = forms.FileField(label="File (CSV, XLSX, XML) ", required=True)
name_transporter = forms.ModelChoiceField(label='Choose transporter', required=True, queryset=Transporter.objects.all())
class Meta:
model = CheckFile
fields = ['file',]
def __init__(self, request, *args, **kwargs):
super().__init__(*args, **kwargs)
self.request = request
def clean(self):
super().clean()
uploaded = parse_csv(self.request.FILES['file'])
В views.py:
class ResultFormView(FormView):
""" View to show results of comparison between two files. """
template_name = 'tool/upload.html'
form_class = CompareFormTransporterCompany
success_url = reverse_lazy('tool:result')
И моя модель в models.py при необходимости:
class CheckFile(models.Model):
name = models.CharField(max_length=200, blank=True)
month = models.DateField(blank=True, null=True)
timestamp = models.DateTimeField(blank=True, null=True)
profile = models.CharField('Choix du profil', blank=False, choices=PROFILE_CHOICES, max_length=100, default="Client")
file = models.FileField(blank=True, null=True, upload_to="uploads/", validators=[validate_file_extension])
def __str__(self):
return self.name
class Meta:
verbose_name = "file"
verbose_name_plural = "files"
Я пробовал много различных решений, но я не понимаю ошибку. Не могли бы вы мне помочь?
Думал, что это пришло из моей формы, но это пришло из views.py. У меня есть:
class RequestFormMixin:
"""Mixin to inject the request in the form."""
def get_form_kwargs(self):
kwargs = super().get_form_kwargs()
kwargs["request"] = self.request
return kwargs
'''
Form result2:
'''
class ResultFormView(RequestFormMixin, FormView):
""" View to show results of comparison between two files. """
template_name = 'tool/upload.html'
form_class = CompareFormTransporterCompany
success_url = reverse_lazy('tool:result')
Заменив class ResultFormView(FormView): на class ResultFormView(RequestFormMixin, FormView):, он работает.
Простите за этот вопрос, я все еще довольно новичок в Django и не предоставил всю необходимую информацию.