Как вызвать или реализовать много-много полей в шаблоне? единственное, о чем я могу думать прямо сейчас, - это сделать еще одну форму специально для IncomeSection. Таким образом, форма IncomeSection будет вызываться снова в представлении и передавать ее в шаблон. Есть ли способ, которым я могу поставить ту же форму, что и имя клиента?
"обновления"
Реальная реальная проблема в том, что я хочу, чтобы форма Dynami c таким образом, пользователь может динамически складывать оклады и бонусы (будет реализован позже с помощью javascript). Таким образом, БД будет создавать новую строку в таблице IncomeSection каждый раз, когда пользователь добавляет новую зарплату или бонус. Поэтому я использую отношение manaytomany с таблицей taxcomp, чтобы обслуживать 1 клиента со многими ситуациями с зарплатами и бонусами. Буду рад, если кто-нибудь сможет прокомментировать мою модель и решение БД.
model.py
class Taxcomp(models.Model):
ClientName = models.CharField(_('Client Name'),max_length=50,blank = True, null= True)
income = models.ManyToManyField(IncomeSection,blank=True)
class IncomeSection(models.Model):
Salary= models.CharField(choices=income.choices,max_length=512,null=True,blank=True)
Bonus= models.CharField(choices=income.choices,max_length=512,null=True,blank=True)
description = models.CharField(max_length=512,null=True,blank=True)
form.py
class taxCompForm(forms.ModelForm):
class Meta:
model = Taxcomp
fields = ('__all__')
view.py
def taxcompute(request):
msg = 'Tax Comp Successfully Updated'
msgerror = 'Invalid inputs'
data = request.session.get('session_data')
clientname = data['client_name']
if request.method == "GET":
form = taxCompForm(initial={'ClientName':clientname})
formc = ProfileUpdateForm()
income_list = []
salary = []
bonus = []
taxcompobj = Taxcomp.objects.all()
header_fields = []
income_obj = Taxcomp.objects.get(pk=1)
print(income_obj)
for income in income_obj.income.all():
incomeForm = taxCompForm(instance=income)
if income.title == "Salary":
salary.append(incomeForm)
elif income.title == "Bonus":
bonus.append(incomeForm)
else:
comission.append(**incomeForm**)
salary.append(taxCompForm(initial={'title':'Salary'}))
bonus.append(taxCompForm(initial={'title':'Bonus'}))
context ={
'form' :form,
'formc': formc,
'salaryform': salary,
'bonusform': bonus
}
else:
form = taxCompForm(request.POST)
if form.is_valid() :
form.save()
messages.success(request, f'{msg}')
return redirect ('taxcompute')
else:
messages.error(request, f'{msgerror}')
print(inputf.errors)
return redirect ('taxcompute')
return render (request,'taxcomp.html',context)
taxcomp. html
{%for bonus in bonusform%}
<div class="row m-2">
<div class="col-sm">
<label class="">Bonus</label>
</div>
<div class="col-lg-2">
{{ bonus.conversion_amount}}
</div>
</div>
{%endfor%}