django - AttributeError:“ManyToManyDescriptor”对象没有“删除”属性
问题描述
我正在尝试创建一个喜欢系统,LikeView
例如BlogDetails
如果我喜欢它然后再次点击我不喜欢它
def LikeView(request, pk):
post = get_object_or_404(Post, id=request.POST.get('post_id'))
if post.likes.filter(id=request.user.id).exists():
Post.likes.remove(id=request.user)
liked = False
else:
post.likes.add(request.user)
liked = True
return HttpResponseRedirect(reverse('blog-detail', args=[str(pk)]))
class BlogDetails(DetailView):
model = Post
template_name = 'blog_details.html'
def get_context_data(self, *args, **kwargs):
categories = Category.objects.all()
context = super(BlogDetails, self).get_context_data(*args, **kwargs)
context['categories'] = categories
liked = False
stuff = get_object_or_404(Post, id=self.kwargs['pk'])
total_likes = stuff.total_likes()
context['likes'] = total_likes
if stuff.likes.filter(id=self.request.user.id).exists():
Liked = True
context['liked'] = liked
return context
它显示 AttributeError: 'ManyToManyDescriptor' 对象没有属性 'remove'
解决方案
这样做:-
def LikeView(request, pk):
post = get_object_or_404(Post, id=request.POST.get('post_id'))
if post.likes.filter(id=request.user.id).exists():
post.likes.remove(id=request.user) # Changed Here
liked = False
else:
post.likes.add(request.user)
liked = True
return HttpResponseRedirect(reverse('blog-detail', args=[str(pk)]))
推荐阅读
- r - 在 R 中重建 FFT 处理的噪声信号
- c# - 传递对象包含带有 ajax 的日期为 null
- stdclass - 如何从 stdClass 对象中检索值?
- javascript - 在 Vue.js 中使用 async/await 模式
- reactjs - React Storybook 仅显示三个单元测试
- authentication - 如何为 Hyperledger Fabric Web 应用程序引入用户登录?
- javascript - 如何在 iframe javascript 中应用 css
- node.js - Angular 7 / Material DataTable 在任何操作后都不会更新
- python - TypeError: 'NoneType' 类型的对象没有 len() ...请帮帮我
- bluetooth-lowenergy - 在 C/C++ 中解析 BLE 广告数据包