Я очень стараюсь, и я нахожу, как я могу это сделать, вы должны отправить свой formset
и queryset
в формате zip и снова отправить formset
для do {{formset.managment_form}}
в шаблоне формы, код представления:
def class_attendance(request):
term = Term.objects.filter(lesson__in=[1,])
form1 = formset_factory(class_attandance_form,max_num=len(term),extra=len(term))
form = form1()
term_form = zip(list(term), list(form))
if request.method == 'POST':
query = form1(request.POST or None)
print(query.errors)
if query.is_valid():
q = query.cleaned_data
print('sss',q)
return render(request,'teacher/class_attendance.html',{'term_form':term_form,'form':form})
и форма:
class class_attandance_form(forms.ModelForm):
choise1 = [(True, 'ح'),
(False, 'غ')]
choise2 = [(True, 'مثبت'),
(False, 'منفی')]
attendance = forms.ChoiceField(required=True, choices=choise1,
widget=forms.RadioSelect(attrs={'class': 'btn_attendance'}))
activity = forms.ChoiceField(required=False, choices=choise2,
widget=forms.RadioSelect(attrs={'class': 'btn_attendance'}))
score = forms.CharField(required=False, max_length=3,
widget=forms.TextInput(attrs={'class': 'text-field blue-field', 'placeholder': 'نمره'}))
user = forms.CharField(required=False,max_length=20,widget=forms.TextInput(attrs={'class':'student'}))
class Meta:
model = Class_Book
fields = ('activity','attendance','score')
и мой шаблон:
<form role="form" dir="rtl" id="frm" autocomplete="off" method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ form.management_form }}
<table cellspacing="0" class="table">
<thead>
<tr>
<th>ردیف</th>
<th>نام و نام خانوادگی</th>
<th>حضور و غیاب</th>
<th colspan="2">نمره</th>
</tr>
</thead>
<tbody>
{% for term, form in term_form %}
<tr class="class_book" id="">
<td>{{ forloop.counter }}</td>
<td>{{ term.student }}</td>
<td>
<div class="form-group" style="margin-bottom: 0">
{{ form.attendance }}
</div>
</td>
<td>
<div class="form-group" style="margin-bottom: 0">
{{ form.activity }}
</div>
</td>
<td>
<div class="form-group">
{{ form.score }}
</div>
</td>
</tr>
{{ form.user }}
<script>
$('#id_form-{{ forloop.counter0 }}-user').val({{ term.student.id }})
</script>
{% endfor %}
</tbody>
</table>
<button id="submit" class="button" type="submit">ثبت</button>
</form>
я надеюсь, что это работает для вас, ребята