Как я могу позволить пользователю динамически добавлять новое поле в Django-форму, вместо того чтобы заставлять его добавлять всю форму при каждом добавлении?
В forms.py:
class BillGateway(forms.Form):
from_date=forms.DateField(widget=forms.DateInput(attrs={'type': 'date'}), label='From ', label_suffix=' - ')
to_date=forms.DateField(widget=forms.DateInput(attrs={'type': 'date'}), label='To ', label_suffix=' - ')
billing_date=forms.DateField(widget=forms.DateInput(attrs={'type': 'date'}), label='Date of Billing ', label_suffix=' - ')
rt_cash_amount_desc=forms.CharField(label='RT Cash Amount Description', label_suffix=' - ', required=False)
rt_cash_amount=forms.DecimalField(label='RT Cash Amount', label_suffix=' - ', required=False)
other_desc=forms.CharField(label='Other Head', label_suffix=' - ', required=False)
other_amount=forms.DecimalField(label="Other Head's Amount", label_suffix=' - ', required=False)
В views.py:
def bill_gateway_view(request):
if request.method=='POST':
fro=request.POST.get('from_date')
to=request.POST.get('to_date')
bill_date=request.POST.get('billing_date')
rt_cash_desc=request.POST.get('rt_cash_amount_desc')
rt_cash_amount=request.POST.get('rt_cash_amount')
other_desc=request.POST.get('other_desc')
other_amount=request.POST.get('other_amount')
request.session['fro']=fro
request.session['to']=to
request.session['bill_date']=bill_date
request.session['rt_cash_desc']=rt_cash_desc
request.session['rt_cash_amount']=rt_cash_amount
return HttpResponseRedirect('/provisional_bill/')
else:
form=BillGateway()
return render(request, 'account/bill_gateway.html', {'form':form})
В шаблонах:
<form action="" method="post" novalidate>
{% csrf_token %}
{{form.as_p}}
<button type="submit" id="savebtn">Proceed</button>
</form>
Теперь, чего я хочу добиться, это позволить пользователю расширить поля other
, оба, other_desc
и other_amount
, если ему/ей нужно заполнить больше деталей в счетах.
Я довольно новичок в этой концепции. Я видел некоторые учебники, в которых преподаватели в основном использовали htmx для достижения таких вещей и казались довольно крутыми и простыми, но то, что они делали, это добавление всей формы снова после нажатия кнопки добавления. Я просто хочу, чтобы пользователь мог добавить только эти два поля, а не всю форму. Как я могу этого добиться? Я потратил целый день на поиски подходящего решения в Интернете, но так и не смог этого сделать. Есть ли способ сделать это с помощью самого htmx? Или что-то другое, что может помочь мне справиться с этой задачей? Заранее спасибо.
Если я правильно вас понял, вам нужно дать пользователю возможность обновить эти 2 поля (other_desk, other amount), для этого вы можете использовать представление класса update из django или создать собственное представление, в обоих случаях вам нужно включить только эти 2 поля в форму обновления, если вы собираетесь создать собственное представление, то вам нужно передать id номер объекта bill gateway в качестве аргумента функции представления или его slug, если поле slug доступно