'how can ı submit more than one row in django view with table form

ı wanna submit more than one record but in that code only first student can be record how can ı add more than one record in django view ı am prety new in django can anyone help about that table image

thats the model.py

class GonulluOgrenciDevamsizlik(models.Model):
ogrenci_dersi = models.ForeignKey('Ogrenci', null=True, on_delete=models.SET_NULL)
gonulu = models.ForeignKey('Gonullu', null=True, on_delete=models.SET_NULL)
devamsizlik = models.BooleanField(verbose_name="Devamsızlık Bilgisi",blank=True, default=False)
sinif = models.ForeignKey('SinifListe', null=True, on_delete=models.SET_NULL)
olusturma_tarihi = models.DateTimeField(auto_now_add=True, verbose_name='Oluşturma Tarihi')
guncelleme_tarihi = models.DateTimeField(auto_now=True)

class Meta:
    ordering = ['-devamsizlik']
    verbose_name = 'Devamsızlık'
    verbose_name_plural = 'Devamsızlıklar'

def __str__(self):
    return self.gonulu.ad + '   ' + self.gonulu.soyad

here is my view: in view ı had been add required foreign keys for my table and then try to save coming post data from table form.

def ogrencidevamsizlik(request, id):
details = "hesabim/ogrenci-devamsizlik.html"
siniflar = SinifListe.objects.filter(gonullu__gonullu__email=request.user.email)
ogrenci = SinifDetay.objects.filter(sinif__gonullu__gonullu__email=request.user.email)
gonulu = GonulluDersleri.objects.get(gonullu__email__iexact=request.user.email, id=id)
gonulluler = Gonullu.objects.get(email__iexact=request.user.email)
ders = GonulluDersleri.objects.filter(gonullu__email=request.user.email, id=id)
devamsizliklar = SinifDetay.objects.filter(sinif__gonullu__gonullu__email=request.user.email, sinif__gonullu__id=id)
if request.method == 'POST':
    form = DevamsizlikDetayForm(request.POST, request.FILES)
    if form.is_valid():
        form.save()
        messages.success(request, 'Devamsızlıklar başarılı bir şekilde eklendi.')
        return redirect('gonullu-siniflar')
    else:
        messages.error(request, 'Devamsızlık bilgilerinizdeki zorunlu alanları eksiksiz doldurmalısınız.')
else:
    form = DevamsizlikDetayForm()
context = {'devamsizliklar': devamsizliklar,
           'gonulu': gonulu,
           'ders': ders,
           'form': form,
           'ogrenci': ogrenci,
           'siniflar': siniflar,
           'gonulluler': gonulluler}
return render(request, details, context)

and here is my table: in table ı try to add devamsizlik area for each student , gonulu , ogrenci and sinif ıd are already coming with views info but devamsizlik will submited by the gonullu so ı made a for loop for all student but when ı submit only first one can be submit thats the promlem

<form class="" novalidate method="POST" enctype="multipart/form-data">
        {% csrf_token %}
        {{ form.title }}
        <div class="row justify-content-center">
            <div class="col-12 col-md-9 mt-3 ">
                <div class="font-weight-bold align-center">Gönüllü Dersi :
                    {% for x in ders %}
                        {{ x.gonullu }} {% if x.birinci_ders != null %} {{ x.birinci_ders }} {{ x.birinci_ders_seviye }} {% endif %}
                    {% endfor %}
                </div>
            </div>
        </div>
        <div class="row justify-content-center">
            <table class="table table-hover">
              <thead>
                <tr data-toggle="collapse" data-target="#accordion" class="clickable">
                  <th scope="col">Id</th>
                  <th scope="col">Öğrenci</th>
                  <th scope="col">Sınıf</th>
                  <th scope="col">Aktif</th>
                  <th scope="col">Devamsızlık</th>
                </tr>
              </thead>
              <tbody>
                    {% for y in devamsizliklar %}
                        <tr>
                          <td id="accordion" class="collapse">{{ y.id }}</td>
                          <td id="accordion" class="collapse">{{ y.ogrenci }}</td>
                          <td id="accordion" class="collapse">{{ y.sinif }}</td>
                          <td id="accordion" class="collapse">{{ y.aktif }}</td>
                          <td id="accordion" class="collapse">
                                <div class="form-group row">
                                    <div class="col-sm-10 col-md-7">
                                        <input data-handle-width="20" data-label-width="1" data-size="mini"
                                                {{ form|validation_class:"devamsizlik" }} id="devamsizlik" name="devamsizlik"
                                                {% if form.devamsizlik.value %}checked{% endif %} class="form-control swich-check"
                                                type="checkbox">
                                    {{ form.devamsizlik|f_errors }}
                                    </div>
                                </div>
                                <div class="form-group row" style="visibility: hidden; display: none">
                                    <label for="gonulu" class="col-sm-2 col-md-5 col-form-label">Gönüllü*</label>
                                    <div class="col-sm-10 col-md-7">
                                         <select class="custom-select my-1 mr-sm-2 {{ form|validation_class:"gonulu" }}" name="gonulu"
                                                id="gonulu" required>
                                                <option value="{{ gonulu.gonullu.pk }}" selected="selected">{{ gonulu.gonullu|safe }}</option>
                                        </select>
                                        {{ form.gonulu|f_errors }}
                                    </div>
                                </div>
                                <div class="form-group row" style="visibility: hidden; display: none">>
                                    <label for="ad" class="col-sm-2 col-md-5 col-form-label">Öğrenci*</label>
                                    <div class="col-sm-10 col-md-7">
                                        <select class="custom-select my-1 mr-sm-2 {{ form|validation_class:"ogrenci_dersi" }}" name="ogrenci_dersi"
                                                id="ogrenci_dersi" required>
                                                <option value="{{ y.ogrenci.ogrenci.pk }}" selected="selected">{{ y.ogrenci.ogrenci|safe }}</option>
                                        </select>
                                        {{ form.ogrenci_dersi|f_errors }}
                                    </div>
                                </div>
                                <div class="form-group row" style="visibility: hidden; display: none">>
                                    <label for="ad" class="col-sm-2 col-md-5 col-form-label">Sınıf</label>
                                    <div class="col-sm-10 col-md-7">
                                        <select class="custom-select my-1 mr-sm-2 {{ form|validation_class:"sinif" }}" name="sinif"
                                                id="sinif" required>
                                            {% for x in siniflar %}
                                                <option value="{{ x.pk }}" selected="selected">{{ x|safe }}</option>
                                            {% endfor %}
                                        </select>
                                        {{ form.sinif|f_errors }}
                                    </div>
                                </div>
                          </td>
                        </tr>
                    {% endfor %}
              </tbody>
            </table>
        </div>
        <!--submit-->
        <div class="row justify-content-center">
            <button type="submit" name="save" value="save"
                   class="btn btn-primary mb-2 float-left bg-c b-0 rounded-0">
                    Devamsızlık bilgilerimi güncelle
            </button>
        </div>
  </form>

And thats is the form.py

class DevamsizlikDetayForm(forms.ModelForm):
class Meta:
    model = GonulluOgrenciDevamsizlik
    fields = '__all__'


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source