摘自这个问题的片段
from django.db.models import F
...
MyModel.objects.filter(id=...).update(hit_count=F(hit_count)+1)
建议放入中间件,我阅读了一些关于中间件的内容,但如果有人能指出他们在这种情况下会做什么,将不胜感激。以我的Bug
模型为例,它有一个独特的 slug 字段和 pk。
这是我的模型:
class Bug( models.Model ):
name = models.CharField( max_length=100 )
slug = models.SlugField(unique=True)
excerpt = models.TextField()
excerpt_markdown = models.TextField( editable=False, blank=True )
summary = models.TextField()
summary_markdown = models.TextField(editable=False, blank=True)
#workaround = models.TextField()
#workaround_markdown = models.TextField(editable=False, blank=True)
date_added = models.DateTimeField()
poster = models.ForeignKey(User)
tags_string = TagField()
class Meta:
ordering = ['name']
def __unicode__(self):
return self.name
def get_absolute_url(self):
return '/bugs/%s/' % self.slug
def save( self, force_insert=False, force_update=False ):
self.summary_markdown = markdown( self.summary )
self.excerpt_markdown = markdown ( self.excerpt )
#self.workaround_markdown = markdown( self.workaround )
super( Bug, self ).save( force_insert, force_update )
链接是通过查看的/bugs/(slug)
。我还没有添加新列,但我想这只是hit_counter = models.IntegerField()