Добавление значения ввода пользователя в экспортируемый excel в библиотеке импорта-экспорта Django

Я пытаюсь получить значение, которое пользователь вставляет в поле IN формы под названием number_of_units.

Как передать значение пользователя и добавить его в колонку total_price в экспортированном файле Excel?

views.py

class ProductDetailView(LoginRequiredMixin, FormMixin, DetailView):
    login_url = 'login'
    redirect_field_name = 'login'
    template_name = 'ProductDetailView.html'
    model = Product
    form_class = CalculatorForm
    date_field = "publish"
    month_format = "%m"
    
    def get_context_data(self, **kwargs):
            context = super(ProductDetailView, self).get_context_data(**kwargs)
            context['form'] = form
            return context
        
    def post(self, request, *args, **kwargs):
            self.object = self.get_object()
            form = self.get_form()
            if form.is_valid():
                return self.form_valid(form)
            else:
                return self.form_invalid(form)

    def form_valid(self, form):
        number_of_units = form.cleaned_data['number_of_units']
        filter_qs = CostCalculator.objects.filter(related_product__slug=self.kwargs['slug'])
        dataset = CostCalculatorResource().export(filter_qs, number_of_units)
        form.save()
        response = HttpResponse(dataset.xlsx, content_type="xlsx")
        response['Content-Disposition'] = 'attachment; filename=cost_calculator.xlsx'

        return response

    def get_success_url(self):
        return reverse('product', kwargs={'slug': self.kwargs['slug']})

models.py

class CostCalculator(models.Model):
    related_product = models.ForeignKey(Product, on_delete=models.CASCADE, related_name='related_product')
    title_component = models.ForeignKey(CalculatorServiceComponent, on_delete=models.CASCADE, default=1)
    number_of_units = models.IntegerField(default=0)
    cost = models.IntegerField(default=0)
    margin = models.FloatField(default=0.0)
    rate = models.IntegerField(default=0)
        
    @property
    def total_price(self):
            return self.cost * self.number_of_units * self.margin

resources.py

class CostCalculatorResource(resources.ModelResource):
    related_product__title = Field(attribute='related_product__title', column_name='Product')
    total_price = Field(attribute="total_price")

    class Meta:
        model = CostCalculator
        fields = ('id', 
                'related_product__title', 
                'total_price'
                )
Вернуться на верх