每次在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 静态 url 的图像标签