作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
感谢这篇文章,我能够在 Django View 中轻松地按查询进行计数和分组:
Django equivalent for count and group by
我在我的应用程序中所做的是在我的数据库中显示一个国家/地区可用的硬币类型和面值列表,因此来自英国的硬币面值可能为“1 farthing”或“6 pence”。 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 字段)。
最好的方法是什么?
最佳答案
你不能用 values()
来做到这一点。但没有必要使用它 - 您只需获取实际的 Collectible
对象,每个对象都有一个 currency_type
属性,该属性将成为相关的链接对象。
正如 justinhamade 建议的那样,使用 select_related()
将有助于减少数据库查询的数量。
把它放在一起,你得到:
coin_values = Collectible.objects.filter(country=country.id,
type=1).extra(
select={'count': 'count(1)'},
order_by=['-count']
).select_related()
关于django - 如何在 Django 的 extra().values() 调用中获取相关对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1138360/
我是一名优秀的程序员,十分优秀!