gpt4 book ai didi

python - 每次在 django 中生成 View 时更新模型

转载 作者:太空宇宙 更新时间:2023-11-03 19:49:43 25 4
gpt4 key购买 nike

每次生成 View PostDetail 时,我都会尝试更新 Post 模型的实例。到目前为止,我已经尝试了多种方法,但没有一个有效。我知道有现成的解决方案(django-hitcounter),但我想自己写一个,这样我就能理解发生了什么。

目标是每次用户访问 PostDetail View 时向 post.views 添加 1。

models.py

class Post(models.Model):
title = models.CharField(max_length=200, unique=True)
slug = models.SlugField(max_length=200, unique=True)
author = models.ForeignKey(
User, on_delete=models.CASCADE, related_name='blog_posts')
updated_on = models.DateTimeField(auto_now=True)
content = models.TextField()
created_on = models.DateTimeField(auto_now_add=True)
status = models.IntegerField(choices=STATUS, default=0)
views = models.IntegerField(default=0)

class Meta:
ordering = ['-created_on']
views.py

class PostDetail(generic.DetailView):
model = Post
template_name = 'blog/post_detail.html'
urls.py

urlpatterns = [
path('<slug:slug>/', views.PostDetail.as_view(), name='post_detail'),
]

最佳答案

一旦到达 Django 可以返回响应的程度(例如:它成功找到 Post 对象等...) - 您可以增加该对象的 View 计数,然后继续返回响应,因此如果您将 View 更改为:

class PostDetail(generic.DetailView):
model = Post
template_name = 'blog/post_detail.html'

def render_to_response(self, context, **kwargs):
self.object.views += 1
self.object.save()
return super().render_to_response(context, **kwargs)

关于python - 每次在 django 中生成 View 时更新模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59918717/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com