2016-07-19 5 views
0

特定の理由により、私のDjangoインラインフォームセットのforループ条件が必要です。しかし、私はそのループから削除されたオブジェクトを除外したい。削除されたオブジェクトをDjangoインラインフォームセットから除外する

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'。 –

関連する問題