Передача аргументов из функции get_context_data() в форму

У меня следующие CBV:

class UserSupplementTransporterView(TemplateView):
    model = Supplement
    template_name = 'tool/transporter-detail.html'
    context_object_name = "tarifs"


    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        slug = self.kwargs['slug']
        context['supplement'] = get_object_or_404(Supplement, slug=slug)
        print(context['supplement'].header_row)
        return context

Я хочу извлечь значение из context['supplement'].header_row и передать его в мой forms.py:

class CompareFormTransporteur(forms.ModelForm):
    file = forms.FileField(label="Fichier CSV", required=True)
    header_row = forms.IntegerField(label="Header row", required=True)


    class Meta:
        model = CheckFile
        fields = ['file',]

    def __init__(self, request, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.request = request
        if self.instance:
            self.initial['header_row'] = 2 #To be filled dynamically

    def clean(self):
        super().clean()
        extension = os.path.splitext(self.request.FILES['file'].name)[1]
        integer = self['header_row'].value()
        print(integer)
        if extension in ['.xlsx', '.xls']:
            uploaded = parse_excel(self.request.FILES['file'], rowheader=integer)
        elif extension == ".csv":
            uploaded = parse_csv(self.request.FILES['file'])
        elif extension == ".xml":
            uploaded = parse_xml(self.request.FILES['file'])

        self.request.session['uploaded'] = uploaded
        self.request.session['profile'] = self.cleaned_data.get('profile')
        print(self.cleaned_data.get('profile'))

Если нужно, вот мои models:

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"

class Supplement(models.Model):
    transporter = models.ForeignKey(Transporter, on_delete=DO_NOTHING, blank=True, null=True)
    company = models.ForeignKey(Company, on_delete=DO_NOTHING, blank=True, null=True)
    brand = models.ForeignKey(Brand, on_delete=DO_NOTHING, blank=True, null=True)
    header_row = models.IntegerField(blank=True)
    supplement_annonce_incomplete = models.DecimalField('Supplément annonce incomplète', max_digits=7, decimal_places=3, blank=True, null=True)
    supplement_retour_expediteur = models.DecimalField('Supplément Retour Expéditeur', max_digits=7, decimal_places=3, blank=True, null=True)
    supplement_etiquette_non_conforme = models.DecimalField('Supplément Etiquette non-conforme', max_digits=7, decimal_places=3, blank=True, null=True)
    supplement_zone_difficile_acces = models.DecimalField('Supplément zone difficile d\'accès', max_digits=7, decimal_places=3, blank=True, null=True)
    slug = models.SlugField(max_length=255, unique=True, blank=True)
    files = models.ManyToManyField(CheckFile, blank=True)

Не могли бы вы мне помочь?

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