利用modelformset實現上面的效果:html
views.py文件:python
from user.formself.myform import RegForm, CustomerFrom, ConsultRecordFrom, EnrollMentFrom,CourseReFrom,StudyRecordFrom from django.forms.models import modelformset_factory class StudyRe(View): """ 學習記錄 """ def get(self,request): coursere_id = request.GET.get('coursere_id') # 獲取課程記錄的pk study_record = models.StudyRecord.objects.filter(course_record_id=coursere_id) # 根據課程記錄的ID進行篩選 formset = modelformset_factory(model=models.StudyRecord,form=StudyRecordFrom,extra=0) # modelform加工廠,加工數據 formset = formset(queryset=study_record) # 把篩選後的結果放入到modelformset_factory進行加工 return render(request,'studyrecord/studtrecord.html',{'formset':formset}) def post(self, request): formret = modelformset_factory(model=models.StudyRecord,form=StudyRecordFrom,extra=0) form_set = formret(request.POST) if form_set.is_valid(): form_set.save() return redirect(reverse('user:studyrecord'))
yform.py文件:django
class StudyRecordFrom(forms.ModelForm): """ 學習記錄 """ class Meta: model = models.StudyRecord fields = '__all__'
html文件:oop
{% extends 'customer_page/starter.html' %} {% block header %} <h1>學習記錄</h1> {% endblock %} {% block content %} <div> <a href="" class="add btn btn-success pull-left">添加</a> <div class="row"> <div class="col-lg-4 pull-right"> <form action="" method="get"> <div class="col-lg-3" style="left: 32px;"> <select id="search_field" class="form-control" name="search_field"> <option value="name">學員</option> </select> </div> <div class="col-lg-9"> <div class="input-group"> <input name="kw" id="kw" type="text" class="form-control" placeholder="Search for..."> <span class="input-group-btn"> <button class="btn btn-default search-btn" type="submit">Go!</button> </span> </div> </div> </form> </div> </div> <form action="" method="post"> {% csrf_token %} {{ formset.management_form }} <!--modelformset_factory的處理標誌--> <table class="table table-bordered table-striped"> <thead> <tr> <th>序號</th> <th>考勤</th> <th>本節成績</th> <th>做業批語</th> <th>某節課程</th> <th>學員</th> </tr> </thead> <tbody> {% for field in formset %} <tr> {{ field.id }} <!--設置ID來區分每條記錄,默認隱藏--> <td>{{ forloop.counter }}</td> <td>{{ field.attendance }}</td> <td>{{ field.score }}</td> <td>{{ field.homework_note }}</td> <td>{{ field.instance.course_record}}</td> <!--禁止選擇更改--> <td class="hidden">{{ field.course_record}}</td> <td>{{ field.instance.student }}</td> <td class="hidden">{{ field.student }}</td> </tr> {% endfor %} </tbody> </table> <button type="submit" class="btn btn-success">保存</button> </form> <nav aria-label="Page navigation"> <ul class="pagination"> {{ page_html|safe }} </ul> </nav> </div> {% endblock %} {% block script %} <script> $('#search_field').val('{{ search_field|default:"name" }}'); $('#kw').val('{{ kw|default:"" }}'); </script> {% endblock %}