Как создать несколько объектов с помощью django formset
Погуглив, мне удалось создать несколько объектов на одной странице с помощью набора форм в Django. Но я хочу добавить все поля из модели класса 'Supporting' в форму.
Ниже приведен код формы, которая принимает только поле 'hour'. Если я ввожу поля, кроме поля 'hour', один раз, я хочу, чтобы оно сохранялось как то же значение, когда добавляется поле hour.
Другими словами, я хочу, чтобы все поля были вводимыми и только поле 'hour' добавлялось по мере необходимости. Как мне добавить остальные поля? forms.py?
Я пробовал несколько раз в течение нескольких дней, но ничего не получается. пожалуйста, помогите....
[models.py]
class Supporting(models.Model):
date = models.DateTimeField(blank=True, null=True)
student = models.ForeignKey(Student, on_delete=models.CASCADE, blank=False, null=True)
kinds = models.CharField(max_length=50, choices=KINDS_CHOICES, blank=True, null=True)
hour = models.CharField(max_length=2, blank=True, null=True)
teacher = models.CharField(max_length=50, blank=True, null=True)
comment = models.TextField(blank=True, null=True)
[forms.py]
from django import forms
from django.forms import modelformset_factory, ModelForm, DateTimeInput
from .models import Supporting
SupportingModelFormset = modelformset_factory(
Supporting,
fields=('hour',),
extra=1,
widgets={'hour': forms.TextInput(attrs={'class': 'form-control'}),
'date': forms.DateTimeInput(format=('%Y-%m-%d %H:%M'), attrs={'autocomplete': 'off', 'type': 'datetime'}) }
)
[views.py]
def add_supporting(request):
if request.method == 'GET':
formset = SupportingModelFormset(queryset=Supporting.objects.none())
elif request.method == 'POST':
formset = SupportingModelFormset(request.POST)
if formset.is_valid():
for form in formset:
if form.cleaned_data.get('hour'):
form.save()
return redirect('supporting')
return render(request, 'supporting/add.html', {'formset': formset})
[add.html]