У меня есть django модель, которая выглядит следующим образом:
class Post(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, default=1,on_delete=models.CASCADE)
title = models.CharField(max_length=120)
likes = models.ManyToManyField(settings.AUTH_USER_MODEL,blank=True,related_name='post_likes')
С помощью этого переключателя пользователь может полюбить сообщение.
class PostLikeApiToggle(APIView):
authentication_classes = (authentication.SessionAuthentication,)
permission_classes = (permissions.IsAuthenticated,)
def get(self, request, slug=None, format=None):
obj = get_object_or_404(Post, slug=slug)
like_count = 0
user = self.request.user
liked = False
if user in obj.likes.all():
liked = False
like_count = 0
obj.likes.remove(user)
else:
liked = True
like_count = like_count + 1
obj.likes.add(user)
messages.add_message(self.request, messages.INFO, 'You liked the post!')
data = {
"liked":liked,
"like_count":like_count
}
return Response(data)
Это представление, над которым я работаю:
@login_required
def m_userprofieview(request):
own_posts = Post.objects.filter(user=request.user)
allposts = Post.objects.all()
if request.user in allposts.likes.all():
liked_posts = liked_posts
else:
liked_posts = None
if request.method == 'POST':
u_form = UserUpdateForm(request.POST,instance=request.user)
i_form = ProfilePictureUpdateForm(request.POST, request.FILES, instance=request.user.profile)
if u_form.is_valid():
u_form.save()
messages.success(request,'Your information has been updated !')
return redirect('/')
if i_form.is_valid():
i_form.save()
messages.success(request,'Your information has been updated !')
return redirect('/')
else:
u_form = UserUpdateForm(instance=request.user)
i_form = ProfilePictureUpdateForm(instance=request.user.profile)
context = {
'u_form':u_form,
'i_form':i_form,
'own_posts_list':own_posts,
'liked_posts_list':liked_posts
}
return render(request,'m_userprofile.html',context)
Я хочу, чтобы у каждого пользователя был профиль пользователя со списком понравившихся ему сообщений.
Это то, что я пробовал:
if request.user in Post.likes.all():
liked_posts = liked_posts
else:
liked_posts = None
Возвращает следующую ошибку: объект «ManyToManyDescriptor» не имеет атрибута «все»
allposts = Post.objects.all()
if request.user in allposts.likes.all():
liked_posts = liked_posts
else:
liked_posts = None
Возвращает следующую ошибку: объект «QuerySet» не имеет атрибута «лайки»
Как я могу проверить, находится ли пользователь в obj.likes.all, где obj - это все сообщения, а не одна?
Спасибо