我有一个带有IntegerField
(hit_count
)的表,当访问页面(例如,http://site/page/3
)时,我希望数据库中记录ID 3的hit_count
列增加1。
查询应类似于:
update table set hit_count = hit_count + 1 where id = 3
我可以用标准的django模型约定来实现这一点吗?或者我应该直接手工编写查询吗?
最佳答案
如果使用django 1.1+,只需使用F expressions:
from django.db.models import F
...
MyModel.objects.filter(id=...).update(hit_count=F('hit_count')+1)
这将执行单个原子数据库查询。
正如gerdemb所说,您应该考虑将它放在中间件中,以使其易于重用,这样就不会使所有视图混乱。
关于python - 在Django增加页面命中数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/622652/