感谢这篇文章,我可以轻松地在 Django 视图中按查询进行计数和分组:
我在我的应用程序中所做的是显示一个国家/地区数据库中可用的硬币类型和面值列表,因此来自英国的硬币可能具有“1 法特”或“6 便士”的面值。是face_value
6,currency_type
是“便士”,存储在相关表中。
在我看来,我有以下代码可以让我完成 90% 的工作:
def coins_by_country(request, country_name):
country = Country.objects.get(name=country_name)
coin_values = Collectible.objects.filter(country=country.id, type=1).extra(select={'count': 'count(1)'},
order_by=['-count']).values('count', 'face_value', 'currency_type')
coin_values.query.group_by = ['currency_type_id', 'face_value']
return render_to_response('icollectit/coins_by_country.html', {'coin_values': coin_values, 'country': country } )
currency_type_id
作为存储在外键字段中的数字(即 4)。我想要做的是检索它作为查询的一部分引用的实际对象(货币模型,因此我可以在模板中获取 Currency.name 字段)。
最好的方法是什么?