Переопределение модели удаления в django
У меня есть модель вопроса, а также модели Like и Dislike, я хочу, чтобы если пользователю уже понравился этот вопрос, а затем нажать кнопку Like, удалить объект Like и балл вопроса увеличится на один.
пример: вопрос имеет 10 like --> я отправляю like, поэтому вопрос имеет 11 like --> я также отправляю like, поэтому удаляю объект и вопрос like quantity (10)
class Like(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name=_("user"))
question = models.ForeignKey(Question,on_delete=models.CASCADE,verbose_name=_("question"))
def save(self, *args, **kwargs):
if not self.pk:
self.question.point += 1
self.question.save()
return super(Like, self).save(*args, **kwargs)
@receiver(post_delete, sender=Like)
def delete_like(sender, instance, using, **kwargs):
print(instance.question.point) #point is 3
instance.question.point -= 1
print(instance.question.point) #point is 2
когда я печатаю, все в порядке, но когда я открываю базу данных, результат не тот же
edit:
def get_context_data(self, *args, **kwargs):
like_exist=bool(Like.objects.filter(user=self.request.user, question=self.get_object()))
dislike_exist=bool(DisLike.objects.filter(user=self.request.user, question=self.get_object()))
self.object=self.get_object()
context = super(QuestionDetail, self).get_context_data(**kwargs)
try:
question = Question.objects.get(id=self.kwargs["pk"])
context['detail'] = question
context['like_ex']=like_exist
context['dislike_ex']=dislike_exist
except Http404:
return reverse("Profile:error")
if "like" or "dislike" in self.request.GET:
if "like" in self.request.GET:
if Like.objects.filter(user=self.request.user, question=self.get_object()):
Like.objects.filter(user=self.request.user, question=self.get_object()).delete()
else:
Like.objects.create(user=self.request.user, question=self.get_object())
if DisLike.objects.filter(user=self.request.user, question=self.get_object()):
DisLike.objects.filter(user=self.request.user, question=self.get_object()).delete()
if "dislike" in self.request.GET:
if DisLike.objects.filter(user=self.request.user, question=self.get_object()).exists():
DisLike.objects.filter(user=self.request.user, question=self.get_object()).delete()
else:
DisLike.objects.create(user=self.request.user, question=self.get_object())
if Like.objects.filter(user=self.request.user, question=self.get_object()).exists():
Like.objects.filter(user=self.request.user, question=self.get_object()).delete()
return context