get() returned 不止一个 Post : return 2
get() returned more than one Post : return 2
我试图为我的 Django 博客制作类似按钮,但我在点击时遇到错误,错误是 get() 返回了不止一个 Post -- 它返回了 2 个!
这是我的代码
views.py
class PostLikeRedirect(RedirectView):
def get_redirect_url(self, *args, **kwargs):
obj = get_object_or_404(Post)
url_ = obj.get_absolute_url()
user = self.request.user
if user.is_authenticated():
obj.likes.add(user)
return url_
models.py
class Post(models.Model):
title = models.CharField(max_length=200)
author = models.ForeignKey(User,on_delete=models.CASCADE)
likes = models.ManyToManyField(User, blank=True,related_name='post_likes')
content = models.TextField()
img = models.ImageField(upload_to='pics',blank=True)
time = models.DateTimeField(default=timezone.now)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('LoveTravel-Details', kwargs={'pk': self.pk})
urls.py
path('blog/<int:pk>/like/', PostLikeRedirect.as_view(),name='Like'),
这一行没有过滤帖子,所以它returns全部
obj = get_object_or_404(Post)
您想按主键过滤,您可以从 **kwargs
获取主键
def get_redirect_url(self, *args, **kwargs):
obj = get_object_or_404(Post, pk=kwargs['pk'])
...
我试图为我的 Django 博客制作类似按钮,但我在点击时遇到错误,错误是 get() 返回了不止一个 Post -- 它返回了 2 个! 这是我的代码
views.py
class PostLikeRedirect(RedirectView):
def get_redirect_url(self, *args, **kwargs):
obj = get_object_or_404(Post)
url_ = obj.get_absolute_url()
user = self.request.user
if user.is_authenticated():
obj.likes.add(user)
return url_
models.py
class Post(models.Model):
title = models.CharField(max_length=200)
author = models.ForeignKey(User,on_delete=models.CASCADE)
likes = models.ManyToManyField(User, blank=True,related_name='post_likes')
content = models.TextField()
img = models.ImageField(upload_to='pics',blank=True)
time = models.DateTimeField(default=timezone.now)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('LoveTravel-Details', kwargs={'pk': self.pk})
urls.py
path('blog/<int:pk>/like/', PostLikeRedirect.as_view(),name='Like'),
这一行没有过滤帖子,所以它returns全部
obj = get_object_or_404(Post)
您想按主键过滤,您可以从 **kwargs
获取主键def get_redirect_url(self, *args, **kwargs):
obj = get_object_or_404(Post, pk=kwargs['pk'])
...