Заполнение нескольких форм одновременно в django

Я хочу заполнить 'n' форм своими данными. Некоторые данные будут из базы данных, а некоторые из сессии.

"С помощью этого я получаю информацию из сессии и располагаю ее в моем представлении. store/view.py

class AddProductToCartView(View):
    def get(self, request, pk):
        cart = request.session.get("cart")
        if cart:
            for item in cart:
                if item["id"] == pk:
                    item["quantity"] += 1
                    break
            else:
                cart.append({"id": pk, "quantity": 1})
            request.session["cart"] = cart
        else:
            request.session["cart"] = [{"id": pk, "quantity": 1}]
        return redirect("store:cart_view")


class CartView(View):
    def get(self, request):
        in_cart = []
        overall_price = 0
        overall_tax = 0
        if "cart" in request.session:
            overall_price = 0
            for item in request.session["cart"]:
                product = Product.objects.select_related("category").get(id=item["id"])
                total_price = product.price * item["quantity"]
                tax = (total_price * product.tax)
                in_cart.append({
                    "product": product,
                    "quantity": item["quantity"],
                    "total_price": total_price,
                    "tax": tax
                })
                overall_price += total_price
                overall_tax += tax

часть данных будет получена из формы

checkout/forms.py

class AddOrderInfoForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['order_by'].disabled = True
        self.fields['created'].disabled = True

    class Meta:
        model = Order
        fields = '__all__'

и checkout/view.py

class OrderView(CreateView):
    template_name = 'order/order_view.html'
    form_class = AddOrderInfoForm
    success_url = reverse_lazy('checkout_view')
    def get_initial(self):
        return {'order_by': self.request.user}

и я хочу заполнить свою модель несколько раз (в зависимости от длины словаря моей "корзины", я полагаю...)

model.py

class Order(models.Model):
    order_by = ForeignKey(User, on_delete=DO_NOTHING, verbose_name='Ordered by')
    ForeignKey(OrderStatus, on_delete=DO_NOTHING)
    created = DateTimeField(default=datetime.now, verbose_name='Beginning of purchase')
    address_street = CharField(max_length=256, verbose_name='')
    address_postal_code = CharField(max_length=18)
    address_city = CharField(max_length=128, verbose_name='City name')
    shipping = ForeignKey(ShippingMethod, on_delete=DO_NOTHING)
    payment = DecimalField(max_digits=12, decimal_places=2, null=False)  #probaly for deletion
    payment_method = ForeignKey(PaymentMethod, on_delete=DO_NOTHING)

    def __str__(self):
        return f'{self.pk}'


class UnitOrder(models.Model):
    order_id = ForeignKey(Order, on_delete=DO_NOTHING)
    product_id = ForeignKey(Product, on_delete=DO_NOTHING)
    quantity = IntegerField(null=False)
    price = models.DecimalField(max_digits=12, decimal_places=2)
    def __str__(self):
        return f'{self.pk}'

Я хочу заполнить свою модель UnitOrder. Я предполагаю, что мне нужно использовать какой-то метод с участием 'modelformset_factory'. Заранее благодарю за любую помощь.

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