Динамическое создание формсета с нужным количеством форм для черновика
This commit is contained in:
@@ -137,32 +137,20 @@ def order_create(request):
|
||||
|
||||
# Создаем formset с предзаполненными товарами из черновика
|
||||
if draft_items:
|
||||
from django.forms import inlineformset_factory
|
||||
from products.models import Product, ProductKit
|
||||
initial_formset_data = []
|
||||
|
||||
for item in draft_items:
|
||||
item_data = {
|
||||
'quantity': item['quantity'],
|
||||
'price': item['price'],
|
||||
'is_custom_price': False,
|
||||
}
|
||||
|
||||
if item['type'] == 'product':
|
||||
try:
|
||||
product = Product.objects.get(id=item['id'])
|
||||
item_data['product'] = product.id
|
||||
initial_formset_data.append(item_data)
|
||||
except Product.DoesNotExist:
|
||||
pass
|
||||
elif item['type'] in ['kit', 'showcase_kit']:
|
||||
try:
|
||||
kit = ProductKit.objects.get(id=item['id'])
|
||||
item_data['product_kit'] = kit.id
|
||||
initial_formset_data.append(item_data)
|
||||
except ProductKit.DoesNotExist:
|
||||
pass
|
||||
|
||||
formset = OrderItemFormSet(initial=initial_formset_data)
|
||||
# Создаём формсет с нужным количеством extra форм
|
||||
DraftOrderItemFormSet = inlineformset_factory(
|
||||
Order,
|
||||
OrderItem,
|
||||
form=OrderItemForm,
|
||||
extra=len(draft_items), # Создаём столько форм, сколько товаров
|
||||
can_delete=True,
|
||||
min_num=0,
|
||||
validate_min=False,
|
||||
)
|
||||
formset = DraftOrderItemFormSet()
|
||||
else:
|
||||
formset = OrderItemFormSet()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user