首页 > 解决方案 > 如何从模板单击按钮时在 django 上增加 IntegerField?

问题描述

如何从模板单击按钮时在 django 上增加 IntegerField?我在模板上有两个按钮,一个用于喜欢,另一个用于不喜欢。我对它们都使用不同的帖子请求,但喜欢和不喜欢没有增加。我希望信息是完整的。

这是models.py代码

    class Post(models.Model):
        Title=models.CharField(max_length=50)
        slug = models.SlugField(unique=True,null=True,blank=True)
        Meta_Tags = models.CharField(max_length=200,null=True)
        Description=models.TextField()
        Category=models.CharField(max_length=50)
        Body=RichTextUploadingField()
        Date=models.DateField(auto_now_add=True)   
        Views=models.IntegerField(default=0,null=True)
        Likes=models.IntegerField(default=0,null=True)
        Dis_Likes=models.IntegerField(default=0,null=True)

        def __str__(self):
            return self.Title + " | " + str(self.Date)

这是 view.py 代码

    def blogdetail(request,slug):
        post=Post.objects.get(slug=slug)
        post.Views +=1
        if request.POST.get('Like'):
            post.Likes +=1
        if request.POST.get('DisLike'):
            post.Dis_Likes +=1   
        post.save()
        context={
            'post':post
        }
        return render(request,'blogdetail.html',context)

模板代码在这里

            <div class="submit-reaction p-3 mb-5">
            <span class="p-x3 mb-5" style="float:left">
            <form action="" method="post">
            {% csrf_token %}
            <button  type="submit" name="Like"style="border:none;background:none;"><i 
            class="far fa-3x fa-thumbs-up text-secondary"></i></button>
            </form>
            </span>
            <span class="p-x3 mb-5" style="float:right">
            <form action="" method="post">
            {% csrf_token %}
            <button type="submit" name="DisLike"style="border:none;background:none;"> 
           <i class="far fa-3x fa-thumbs-down text-secondary"></i></button>
            </form>
            </span>
            </div>

标签: django

解决方案


使用F()表达式

from django.db.models import F

reporter = Reporters.objects.get(name='Tintin')
reporter.stories_filed = F('stories_filed') + 1
reporter.save()

看:

https://docs.djangoproject.com/en/3.2/ref/models/expressions/#f-expressions


推荐阅读