我有一个带IntegerField
(hit_count
)的表,当访问一个页面时(例如http://site/page/3
),我希望hit_count
数据库中的记录ID 3的列增加1.
查询应该像:
update table set hit_count = hit_count + 1 where id = 3
我可以使用标准的Django模型约定吗?或者我应该手动编写查询?
如果你使用Django 1.1+,只需使用F表达式:
from django.db.models import F ... MyModel.objects.filter(id=...).update(hit_count=F('hit_count')+1)
这将执行单个原子数据库查询.
正如gerdemb所说,你应该考虑把它放在一个中间件中,以便它可以轻松重复使用,这样就不会让你的所有观点变得混乱.