Я просто запутался или устал от этого. когда этот код выполняется, он не всегда удаляет или добавляет, и когда он делает это, он не будет обновлять число подобных. Как я вижу в коде, когда пользователь найден в значении «Мне нравится», он должен удалить пользователя и уменьшить количество лайков и наоборот, похоже, он этого не делает. Мне также кажется, что я могу иметь только 1 лайк на всех фотографиях, поэтому мне придется удалить один лайк и добавить к другому, опять же, кажется, все это происходит случайным образом.
def liked_pic(request):
pdb.set_trace()
if request.method == 'POST':
pic = Pictures.objects.get(id=request.POST.get('pic_id'))
user = UserModel.objects.get(email=request.user)
liked = Pictures.objects.filter(likes=user).exists()
print(pic.likes, liked)
if liked:
pdb.set_trace()
pic.likes.remove(user)
pdb.set_trace()
pic.save()
if not liked:
pdb.set_trace()
pic.likes.add(user)
pic.save()
picturecount = Pictures.objects.filter(likes).count()
data = {'json_pic_id': pic.id,'likes': picturecount, 'user':liked}
return JsonResponse(data)
return HttpResponseRedirect('home')
class Pictures(models.Model):
image = models.ImageField(upload_to='static/dataset/')
author = models.ForeignKey(UserModel,on_delete=models.CASCADE)
likes = models.ManyToManyField(UserModel,default=False,blank=True,related_name='likes')
description = models.CharField(default=False,max_length=200)
class UserModel(AbstractBaseUser,PermissionsMixin):
sys_id = models.AutoField(primary_key=True, blank=True)
email = models.EmailField(max_length=127, unique=True, null=False, blank=False)
username = models.CharField(max_length=30, unique=True)
is_staff = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
objects = MyUserManager()
USERNAME_FIELD = "email"
# REQUIRED_FIELDS must contain all required fields on your User model,
# but should not contain the USERNAME_FIELD or password as these fields will always be prompted for.
REQUIRED_FIELDS = ['is_staff']
pdb trace-----------------
System check identified no issues (0 silenced).
January 06, 2020 - 09:50:49
Django version 3.0, using settings
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
**accounts.UserModel.None False**
(Removed computer path information)
**-> pic.likes.add(user)**
(Pdb) continue
[06/Jan/2020 09:51:05] "POST /liked/ HTTP/1.1" 200 44
[06/Jan/2020 09:51:23] "GET /home/ HTTP/1.1" 200 3141
[06/Jan/2020 09:51:23] "GET /media/static/dataset/00000016.png HTTP/1.1" 200 184935
**accounts.UserModel.None True**
(Removed computer path information)
-> **pic.likes.remove(user)**
(Pdb)
(Pdb) continue
-> pic.save()
(Pdb) continue
[06/Jan/2020 09:51:52] "POST /liked/ HTTP/1.1" 200 44