Передача аргументов из функции 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)
Не могли бы вы мне помочь?