Редактирование представления Django ModelFormset

Я создаю приложение для учета расходов, которое имеет две формы.

  1. A normal modelform

    class ExpenseCreateForm(forms.ModelForm):
    expense_description = forms.CharField(widget=forms.Textarea(attrs={'rows': 3}))
    
    class Meta:
        model = models.Expense
        fields = ['expense_title', 'expense_description', 'expense_requester', 'expense_VAT', 'expense_discount',
                  'expense_sub_total', 'expense_total']
    
  2. A modelformset_factory:

    class ItemCreateForm(forms.ModelForm):
       quantity = forms.DecimalField(required=False)
       amount = forms.DecimalField(required=False)
    class Meta:
        model = models.ExpenseItemModel
        can_delete = True,
        fields = ['item_name', 'item_price', 'item_link', 'quantity', 'amount']


    ItemCreateFormset = modelformset_factory(
    
        models.ExpenseItemModel,
        form=ItemCreateForm,
        can_delete=True,
        extra=0,
    )

Ниже представлена страница создания - первые 3 поля представляют собой обычную форму модели, а следующие 2 строки могут быть добавлены динамически с помощью jquery. Все работает нормально и экземпляры модели отправляются в БД

enter image description here

Для моего представления редактирования я смог отобразить экземпляр modelform, как показано ниже enter image description here

моя проблема заключается в отображении экземпляров modelformset_factory

Ниже приведен мой вид редактирования

class DetailExpense(View):
    template = 'expense/expense_detail.html'

    def get(self, request, expense_id, company_slug):
        expense_record = models.Expense.objects.select_related('expense_requester').prefetch_related(
            'expense_item').get(pk=expense_id)
        #expense_record_items = get_object_or_404(models.ExpenseItemModel,)
        editable = True
        expense_item_form = formset_factory(forms.ItemCreateForm)
        expense_form = forms.ExpenseCreateForm(instance=expense_record)
        context = {
            'expense_record': expense_record,
            'editable': editable,
            'expense_item_form': expense_item_form,
            'expense_form': expense_form,
        }
        return render(request, template_name=self.template, context=context)

enter image description here

Вернуться на верх