每次在Django中生成视图时更新模型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每次在Django中生成视图时更新模型相关的知识,希望对你有一定的参考价值。

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

目标是每次用户访问PostDetail视图时,在post.view中添加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'),
]
答案

您可以写帖子方法

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

    def post(self, *args, **kwargs):
        self.object = self.get_object(self.get_queryset())
        # add your logic here
        return HttpResponseRedirect('/your-success-url')

以上是关于每次在Django中生成视图时更新模型的主要内容,如果未能解决你的问题,请参考以下文章

如何设置模型实例以在Django中生成确认表单

在视图而不是模板中生成带有 Django 静态 url 的图像标签

从 Django 模型中生成 JavaScript 对象

如何不在 Python、Django 中生成两次相同的动态图像?

在 Django 中生成唯一的 slug

在 Django 模板中生成 JSON 的陷阱