仅标题似乎是模糊的。 这是细节。
我有以下模型:
class Post(models.Model): title = models.CharField(max_length=100) # deleted for brevity created_at = models.DateTimeField(blank=True, null=True, auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) count_visits = models.PositiveIntegerField(default=1) # counts visit time of posts
并在blogs.html
添加了以下代码:
{% if post.created_at == post.updated_at %} Posted {{ post.created_at|naturaltime }} {% else %} Updated {{ post.updated_at|naturaltime }} {% endif %}
然后我在DetailView
做了一个简单的if statement
来跟踪某个帖子的访问者数量:
def post_detail(request, title_slug): obj = get_object_or_404(Post, slug=title_slug) session_key = f'key_{title_slug}' if not request.session.get(session_key, False): obj.count_visits += 1 obj.save() request.session[session_key] = True return render(request, 'blogApp/detail.html', {'post': obj})
这是问题所在,当我创建帖子时,在列表视图中显示“立即Posted now
。
但是当我单击该帖子以查看其详细信息时。 它显示立即Updated now
当我进入详细视图时,我想我知道出了什么问题。 它创建一个session_key
,使obj.count_visits += 1
递增并保存对象obj.save()
。
调用obj.save()
,它将更新数据库,其中包括updated_at
字段,这就是为什么我Updated now
要Updated now
。
我该如何解决? 我想增加count_views
字段的数量,但是保存对象时不应更改updated_at
字段。
我希望你能帮助我。 谢谢