简体   繁体   中英

Exclude deleted objects from Django inline formset

I need a for loop condition for my Django inline formset for a particular reason. But I want to exclude deleted objects from that loop.

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?

Formset has a deleted_forms prop You can use it to exclude them.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM