问题描述
首先,我有一个学生模型和一个咨询模型。
一个学生模型有数百个咨询模型。
我想将每个科目(分类)的最后咨询日期制作成每个学生的列表视图。
如果做到了,老师一看就知道谁咨询的时间最长,谁的咨询时间最近。
有什么办法吗?
咨询模型.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 }}