Увеличение целочисленного поля только один раз за сообщение

Я создаю приложение для блога, и я реализовал функцию , Когда пользователь редактирует сообщение, оно добавляет +1 point в User Profile's Integer Field.

Все работает нормально, но Integer Field увеличивается каждый раз, когда я обновляю страницу.

И я пытаюсь добавить в него только +1 точку.

models.py

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile')
    full_name = models.CharField(max_length=30,default='')
    edited_count = models.IntegerField(default=0)

class BlogPost(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    title = models.CharField(max_length=30, default='')
    body = models.CharField(max_length=30, default='')
    blog_post_edited_by = models.ForeignKey(User, on_delete=models.CASCADE, related_name='blog_post_edited_by')

views.py

def blog_post_detail_view(request,blogpost_id):
    post = get_object_or_404(BlogPost,id=blogpost_id)

    post_edited_by = post.blog_post_edited_by

    if post_edited_by == request.user:
        request.user.profile.edited_count += 1
        request.user.profile.save()

    
    context = {'post':post}
    return render(request, 'blog_post_detail_view.html', context}

Что я пробовал?

  • Я также пробовал использовать Boolean Field если пользователь получает +1 балл, то он превращается в False, Но это создает проблему, я имею в виду я награждаю пользователя в каждой правке Но он будет награждать только один раз каждый раз.

  • Я также пробовал награждать +1 баллами в Edit Form как :-

def edit_blogpost(request,blogpost_id):
    post = BlogPost.objects.get(id=blogpost_id)

    if request.method != 'POST':
        form = BlogPostEditForm(request.POST or None,
                              request.FILES or None, instance=post)

    else:
        form = BlogPostEditForm(
            instance=post, data=request.POST, files=request.FILES)
        if form.is_valid():
            form.save(commit=False)
            post.blog_post_edited_by = request.user
            form.save()

# Incrementing here
            post_edited_by = post.blog_post_edited_by

            if post_edited_by == request.user:
                request.user.profile.edited_count += 1
                request.user.profile.save()

            return redirect('home')

        else:
            messages.error(request,
                           'Something went wrong!')

    context = {'form':form}
    return render(request, 'edit_blogpost.html', context)

Но он даже не увеличивает Integer Field, Но если он увеличивает, то если пользователь заходит на страницу редактирования, то он будет увеличиваться при каждом посещении.

Я пробовал много раз, но ничего не получилось.

Я буду очень признателен за вашу помощь. Спасибо заранее.

Вернуться на верх