Я только что закончил создавать свою таблицу в моем views.py, но когда я применяю его к html, я получаю идентификатор, а не текст, пожалуйста, смотрите ссылку, которую я разместил ниже, потому что я не могу опубликовать изображение здесь, я новичок здесь
if request.method != 'POST':
raise Http404('Only POSTs are allowed')
try:
m = EmployeeUser.objects.get(Username=request.POST['p_user'], Password=request.POST['p_pass'],
My_Position=request.POST['position'])
#print(request.POST['position'])
if m.My_Position.id != request.POST['position']:
request.session['member_id'] = m.id
aa = request.POST['p_user']
ss = EmployeeUser.objects.all().filter(Username=aa)
teacher = SubjectSectionTeacher.objects.filter(Employee_Users__id=m.id)
student_subject = Subject.objects.filter(id__in=teacher.values_list('Subjects')).distinct().order_by('id')
student_section = Section.objects.filter(id__in=teacher.values_list('Sections')).distinct().order_by('id')
student_gradelevel = EducationLevel.objects.filter(
id__in=teacher.values_list('Education_Levels')).distinct().order_by('id')
cate = gradingCategories.objects.all()
studentenrolledsubject = StudentsEnrolledSubject.objects.filter(
Subject_Section_Teacher__in=teacher.values_list('id')).distinct().order_by('id')
period = gradingPeriod.objects.filter(
Grading_Periods_Setting__Education_Levels__in=student_gradelevel.values_list('id')).distinct().order_by(
'id')
students = studentsEnrolledSubjectsGrade.objects.filter(Teacher=m.id).filter(
grading_Period__in=period.values_list('id')).filter(
Subjects__in=student_subject.values_list('id')).filter(Grading_Categories__in=cate.values_list('id')).filter(GradeLevel__in=student_gradelevel.values_list('id')).order_by(
'Students_Enrollment_Records', 'Grading_Categories'
).values('Students_Enrollment_Records', 'Grading_Categories',
'Grade').distinct()
Categories = list(cate.values_list('id', flat=True).order_by('id')
table = []
student_name = None
table_row = None
columns = len(Categories) + 1
#
# # table header
table_header = ['Student Names']
table_header.extend(Categories)
table.append(table_header)
for student in students:
if not student['Students_Enrollment_Records'] == student_name:
if not table_row is None:
table.append(table_row)
table_row = [None for d in range(columns)]
student_name = student['Students_Enrollment_Records']
table_row[0] = student_name
table_row[Categories.index(student['Grading_Categories']) + 1] = student['Grade']
table.append(table_row)
Это models.py
class studentsEnrolledSubjectsGrade(models.Model):
Teacher = models.ForeignKey(EmployeeUser, related_name='+', on_delete=models.CASCADE,
null=True, blank=True)
GradeLevel = models.ForeignKey(EducationLevel, related_name='+', on_delete=models.CASCADE,
null=True, blank=True)
Subjects = models.ForeignKey(Subject, related_name='+', on_delete=models.CASCADE, null=True)
Students_Enrollment_Records = models.ForeignKey(StudentsEnrolledSubject, related_name='+',
on_delete=models.CASCADE, null=True)
Grading_Categories = models.ForeignKey(gradingCategories, related_name='+', on_delete=models.CASCADE,
null=True, blank=True)
grading_Period = models.ForeignKey(gradingPeriod, related_name='+', on_delete=models.CASCADE,
null=True, blank=True)
_dates = models.CharField(max_length=255,null=True, blank=True)
Grade = models.FloatField(null=True, blank=True)
@property
def dates(self):
# you have Year-month-day dates from the form
return [datetime.strptime(date, '%Y-%m-%d') for date in self._dates]
@dates.setter
def dates(self, values):
# '|' as delimiter
self._dates = '|'.join(values)
и html
<table>
<tr>
{% for v in table.0 %}
{% if forloop.first %}
<th id="thupdate">{{v}}</th>
{% else %}
<th ><input type="text" name="updatedate" value="{{ v }}"></th>
{% endif %}
{% endfor %}
<th hidden></th>
<th data-id='headerss' id='headerave'>Average</th>
</tr>
<tbody>
{% for row in table|slice:"1:" %}
<tr class="tr2update">
<td>{{row.0}}</td>
<td class="tdupdate" hidden><input type="text" hidden></td>
{% for c in row|slice:"1:" %}
<td>
<input type="text" data-form-field="{{teacher.id}}" name="oldgrad" class="oldgrad" value="{{teacher.Grade}}"/>
</td>
{% endfor %}
<td data-id='row' id="ans"><input type='number' class='averages' step="any" name="average" readonly/></td>
</tr>
{% endfor %}
</tbody>
</table>
, когда я пытаюсь распечатать Categories = StudentsEnrolledSubjectsGrade.objects.filter (Grading_Categories__in = cate.values_list ('id')). Order_by ('Grading_Categories') там написано [1, 2] Я не знаю, как получите текст, пожалуйста, помогите мне, ребята
Это то, что я хочу, результат
Правильный результат
мой текущий результат
моя база данных в admin.py
admin site
ОБНОВЛЕНИЕ
, когда я пытаюсь ответить на вопрос г-на Криса
table_header.extend(list(Categories.values_list('gradingcategories__name', flat=True)))
Я получил эту ошибку У объекта 'list' нет атрибута 'values_list'
ОБНОВЛЕНИЕ
students = studentsEnrolledSubjectsGrade.objects.filter(Teacher=m.id).filter(
grading_Period__in=period.values_list('id')).filter(
Subjects__in=student_subject.values_list('id')).filter(Grading_Categories__in=cate.values_list('id')).filter(GradeLevel__in=student_gradelevel.values_list('id')).order_by(
'Students_Enrollment_Records__Students_Enrollment_Records__Student_Users', 'Grading_Categories'
).values('Students_Enrollment_Records__Students_Enrollment_Records__Student_Users', 'Grading_Categories',
'Grade').distinct()
teacherStudents = StudentsEnrolledSubject.objects.filter(
id__in=students.values_list('Students_Enrollment_Records'))
Categories = list(cate.values_list('id', flat=True).order_by('id'))
#print(Categories)
table = []
student_name = None
table_row = None
columns = len(Categories) + 1
table_header = ['Student Names']
table_header.extend(list(cate.values_list('CategoryName', flat=True)))
table.append(table_header)
for student in students:
if not student['Students_Enrollment_Records__Students_Enrollment_Records__Student_Users'] == student_name:
if not table_row is None:
table.append(table_row)
table_row = [None for d in range(columns)]
#print("table_row", table_row)
student_name = student['Students_Enrollment_Records__Students_Enrollment_Records__Student_Users']
#print("student_name", student_name)
table_row[0] = student_name
table_row[Categories.index(student['Grading_Categories']) + 1] = rate
#print("table_row[Categories.index(student['Grading_Categories']) + 1]", table_row[Categories.index(student['Grading_Categories']) + 1])
table.append(table_row)
дополнительные модели
class StudentsEnrollmentRecord(models.Model):
Student_Users = models.ForeignKey(StudentProfile, on_delete=models.CASCADE,null=True)
Old_Student = models.BooleanField( blank=True)
New_Student = models.BooleanField(blank=True)
Date_Time = models.DateField(auto_now_add=True)
School_Year = models.ForeignKey(SchoolYear, related_name='+', on_delete=models.CASCADE, null=True, blank=True)
Courses = models.ForeignKey(Course, related_name='+', on_delete=models.CASCADE, null=True, blank=True)
strands = models.ForeignKey(strand, related_name='+', on_delete=models.CASCADE, null=True, blank=True)
Section = models.ForeignKey(Section, related_name='+', on_delete=models.CASCADE, null=True,blank=True)
Payment_Type = models.ForeignKey(PaymentType, related_name='+', on_delete=models.CASCADE, null=True)
class StudentsEnrolledSubject(models.Model):
Students_Enrollment_Records = models.ForeignKey(StudentsEnrollmentRecord, related_name='+', on_delete=models.CASCADE,null=True)
Subject_Section_Teacher = models.ForeignKey(SubjectSectionTeacher, related_name='+', on_delete=models.CASCADE,null=True)