2016-07-19 4 views
0

Мне нужно условие цикла для моего встроенного набора форм Django по определенной причине. Но я хочу исключить удаленные объекты из этого цикла.Исключить удаленные объекты из Django inline formset

def my_fun(request, pk): 

    instance = get_object_or_404(Sale.objects.filter(pk=pk, is_deleted=False)) 

    SaleItemFormset = inlineformset_factory(
    Sale, 
    SaleItem, 
    can_delete=True, 
    extra=extra, 
    exclude=('creator', 'updator', 'auto_id', 'is_deleted'), 
    widgets = { 
     'product': autocomplete.ModelSelect2(url='products:product_autocomplete', attrs={'data-placeholder': 'Product', 'data-minimum-input-length': 1}), 
     'qty': TextInput(attrs={'class': 'required form-control number', 'placeholder': 'Quantity'}), 
     'cost': TextInput(attrs={'class': 'required form-control number', 'placeholder': 'Cost'}), 
     'price': TextInput(attrs={'class': 'required form-control number', 'placeholder': 'Price'}), 
     'tax': TextInput(attrs={'class': 'required form-control number', 'placeholder': 'Tax'}), 
     'discount': TextInput(attrs={'class': 'required form-control number', 'placeholder': 'Discount'}), 
     'subtotal': TextInput(attrs={'class': 'required form-control number', 'placeholder': 'Sub Total'}), 
    } 
) 

    sale_item_formset = SaleItemFormset(request.POST, prefix='sale_item_formset', instance=instance) 

    if sale_item_formset.is_valid(): 
    for form in sale_item_formset: 
     # I don't want deleted formset objects 
     # how can I exclude from this loop? 

ответ

2

Formset имеет deleted_forms проп Вы можете использовать его, чтобы исключить их.

if sale_item_formset.is_valid(): 
    deleted_forms = sale_item_formset.deleted_forms 
    for form in sale_item_formset: 
     if form not in deleted_forms: 
      #do some staff 
+0

'sale_item_formset.deleted_forms'. –