Заполнение нескольких форм одновременно в 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'. Заранее благодарю за любую помощь.