我有一个具有日期时间的模型:
class Meeting(models.Model):
section = models.ForeignKey(Section)
start_time = models.DateTimeField(verbose_name='meeting start time')
和访问日期时间的外来对象(获取最早的开始时间):
class Section(models.Model):
def calculate_start_date(self):
try:
start = Meeting.objects.filter(section__id=self.id).order_by('start_time')[0].start_time
return start
except IndexError:
start = datetime.datetime.utcnow()
return start
course = models.ForeignKey(Course)
first_start_date = property(calculate_start_date)
class Course(models.Model):
title = models.CharField(max_length=255)
现在,当我像这样在我的模板中使用它时:
{% for course in course_list %}
{{ course.title }}
{% for section in course.section_set.all %}
{{ section.first_start_date }}
{% endfor %}
{% endfor %}
它将打印出所有部分的日期。如果有一个部分没有与之关联的会议,它会打印出当前日期。
当我尝试引入 dictsort 按时间对课程内的会议进行排序时,我的问题出现了:
{% for course in course_list %}
{{ course.title }}
{% for section in course.section_set.all|dictsort:"first_start_date" %}
{{ section.first_start_date }}
{% endfor %}
{% endfor %}
对于所有部分都至少有一个会议的任何课程,这会正确显示,但对于包含没有与会议链接的任何部分的任何课程,则无法正确显示。
我在这里感到困惑,因为第一个模板似乎表明当一个部分没有与之链接的会议时提供了日期时间(当前时间),但在第二个模板中,它的行为就像这不是案子。
为什么 dictsort 在这里失败?