django:获取相关对象的有序列表(不同型号)

时间:2014-02-16 20:34:03

标签: python django django-models django-templates django-views

我遇到了django模型查询。

我的模特:

class ProjectCategory(models.Model):
    name=models.CharField(_('Categoryname'), max_length=250)

class Reference(models.Model):
    title=models.CharField(_('Title'),max_length=250)
    category=models.ForeignKey(ProjectCategory)
    start_date=models.DateTimeField(_('Start date'),
                                help_text= _(u'Starting date of the project'),
                                )
    end_date=models.DateTimeField(_('End date'),
                              help_text= _(u'Project end date'),)

class Project(Reference):
   size=models.CharField(_('size'),max_length=250)

我需要一个所有类别的列表(按名称排序)及其所有参考和项目(由start_date排序。

e.g

Category1
-Reference 1 1.1.2012
-Project 1 1.1.2013
-Reference 2 1.1.2014

Category2
-Project 2 1.1.2000
-Reference 3 1.1.2001

如何构建查询和模板?

1 个答案:

答案 0 :(得分:1)

查询是直截了当的:

categories = ProjectCategory.objects.select_related().all().order_by("name")

在模板中,您只需要遍历category_set,因为应该在那里找到ReferenceProjectdictsort应该在模板中进行排序:

{% for c in categories %}
  <h2> {{ c }} </h2>
  <ul>
  {% for r in c.category_set.all|dictsort:"start_date" %}
    <li> {{ r }} </li>
  {% endfor %}
  <ul>
{% endfor %}