У меня есть модель, которая подключается к форме. Вы можете предположить, что это очень простая модель с 1 атрибутом.
class Past_Location(models.Model):
location = models.CharField(max_length=100)
Я хочу, чтобы пользователь мог добавить больше строк в форму с помощью кнопки. Вот почему я отражаю эту модель в наборе форм:
LocationFormSet = forms.modelformset_factory(
Past_Location,
fields='__all__',
extra=1,
widgets={
'location': forms.TextInput(
attrs={
'class': 'form-control',
'placeholder': 'Enter Location Name here'
}
)
}
)
Вот создание кнопки, чтобы добавить больше строк.
<div class="input-group">
{{ form.name }}
<div class="input-group-append">
<input type="text" name="name" value="">
<button id="add" type="button" class="btn btn-success add-form-row">+</button>
</div>
</div>
views.py
def form_name_view(request):
form = forms.NewPatientForm()
if request.method == 'GET':
form = NewPatientForm(request.GET or None)
formset = LocationFormSet(queryset=Past_Location.objects.none())
print("Hey1")
elif request.method == 'POST':
print("Hey2")
form = NewPatientForm(request.POST)
formset = LocationFormSet(request.POST)
if form.is_valid() and formset.is_valid():
patient_info = form.save()
for loc in formset:
location = loc.save(commit=False)
location.save()
location.patient.add(patient_info)
location.save()
return index(request)
else:
print('Error Form Invalid')
return render(request, 'first_app/form_page.html', {'form':form,'formset':formset})
Я думал, что класса «add-form-row» будет достаточно, чтобы динамически добавлять больше строк, но этого не было. Поэтому я хотел последовать некоторым примерам и использовать jquery, чтобы добавить больше строк. Однако, поскольку моя форма отражена от модели, я не знаю, как получить доступ и добавить новую строку с помощью jquery. Я хотел опубликовать MVP, однако проект слишком сложный и содержит слишком много необходимых файлов. Поэтому я хотел бы знать, каков стандартный способ взаимодействия с модельными формами через jquery?