diff --git a/myproject/orders/views.py b/myproject/orders/views.py index db49095..3586610 100644 --- a/myproject/orders/views.py +++ b/myproject/orders/views.py @@ -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()