我想在我的应用程序中找到某些数据库字段的排序列表,例如说年份(我将记录所有记录的年份,总计显示如下:2009年(10),2008年(3) )等等,然后点击某一年将显示这些记录。
我该怎么做?
编辑1
class Year(models.Model):
year = models.PositiveSmallIntegerField()
def __unicode__(self):
return unicode(self.year)
class CommonVehicle(models.Model):
year = models.ForeignKey(Year)
series = models.ForeignKey(Series)
def __unicode__(self):
name = ''+str(self.year)+" "+str(self.series)
return name
class Vehicle(models.Model):
stock_number = models.CharField(max_length=6, blank=False)
vin = models.CharField(max_length=17, blank=False)
common_vehicle = models.ForeignKey(CommonVehicle)
def __unicode__(self):
return self.stock_number
答案 0 :(得分:1)
摘要列表的查询应如下所示(仅限Django 1.1+):
from django.db.models import Count
Widget.objects.order_by('year').values('year').annotate(count=Count('id'))
这将返回一个字典列表,如下所示:
[{'count': 3, 'year': 2006}, {'count': 1, 'year': 2007}, {'count': 2, 'year': 2009}]
您可以在模板中轻松迭代以生成链接列表:
{% for item in year_counts %}
<li><a href="{% url year_view year=item.year %}">{{ item.year }} ({{ item.count }})</a></li>
{% endfor %}
“year_view”是您创建的视图,它接受“年”参数并显示已过滤的对象列表,如:
Widget.objects.filter(year=year)
答案 1 :(得分:0)
不确定这是否有帮助,但您只需执行以下操作即可计算过滤查询中的对象数:
this_year = Widget.object.filter(you_date_field__year=2009).count()