出于特殊原因,我需要一个用于我的Django内联formset的for循环条件。但我想从该循环中排除已删除的对象。
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?
答案 0 :(得分: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