Увеличение целочисленного поля только один раз за сообщение
Я создаю приложение для блога, и я реализовал функцию , Когда пользователь редактирует сообщение, оно добавляет +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
, Но если он увеличивает, то если пользователь заходит на страницу редактирования, то он будет увеличиваться при каждом посещении.
Я пробовал много раз, но ничего не получилось.
Я буду очень признателен за вашу помощь. Спасибо заранее.