首先,我有一个学生模型和一个咨询模型。
一个学生模型中有上百个咨询模型。
我想把每个科目(分类)的最后一次咨询日期做成每个学生的listview。
如果做了,老师可以一目了然地看到谁咨询时间最长,谁咨询时间最近。
有办法吗?
咨询model.py
class Consultation(models.Model):
classification = models.CharField(
max_length=10,
choices=CLASSIFICATION, # there are 'korean', 'english', 'math', 'etc ... '
default='etc',
)
content = models.TextField(max_length=1000, blank=False, verbose_name='contentt')
created_to = models.ForeignKey(
Student,
related_name='consultations',
verbose_name='student',
on_delete=models.CASCADE
)
created_at = models.DateTimeField(default=datetime.now, verbose_name='time')
学生mnodel.py
class Student(models.Model):
name = models.CharField(max_length=255, verbose_name='이름')
如果可以,我想使用ListView
class StudentList(ListView):
model = Student
template_name = 'student/list.html'
context_object_name = 'students'
paginate_by = 10
blah blah blah
我想做的是这样的
学生姓名 | 韩国科目最后一次会诊日期 | 英语科目最后一次会诊日期 | 数学科目最后一次会诊日期 | |
---|---|---|---|---|
学生姓名 | 韩国科目最后一次咨询日期 | 英语科目最后一次咨询日期 | 数学科目最后一次咨询日期 | |
学生姓名 | 韩国科目最后一次咨询日期 | 英语科目最后一次咨询日期 | 数学科目最后一次咨询日期 | |
学生姓名 | 韩国科目最后一次咨询日期 | 英语科目最后一次咨询日期 | 数学科目最后一次咨询日期 | |
学生姓名 | 韩国科目最后一次咨询日期 | 英语科目最后一次咨询日期 | 数学科目最后一次咨询日期 | |
class Student(models.Model):
name = models.CharField(max_length=255, verbose_name='이름')
def last_consult_korean(self):
last_date=self.consultations.filter(classification='korean').order_by('-created_at').first()
return last_date.created_at if last_date else ''
在你的模型中写一个这样的函数,在你的模板中调用{{ student.last_consult_korean }}