python - 精确查找的 QuerySet 值必须使用 slicing-Django 限制为一个结果
问题描述
我正在建立一个新闻网站。虽然我试图获取具有相同标签的相关新闻列表。错误说:精确查找的 QuerySet 值必须限制为使用 slicing-Django 的一个结果。
我有两个模型 News 和 Tag,Tag 是 News 的多对多外键。
新闻模型:
class News(models.Model):
tag = models.ManyToManyField(Tag, blank=True, verbose_name='tag')
标签型号:
class Tag(models.Model):
name = models.CharField(max_length=40)
看法:
def newsDetailView(request, news_pk):
news = get_object_or_404(News, id=news_pk)
tags = news.tag.annotate(news_count=Count('news'))
relative_news = News.objects.filter(tag=tags)
return render(request, "news_detail.html", {
'news': news,
'tags': tags,
'relative_news': relative_news
})
有朋友可以帮忙吗?非常感谢!
解决方案
以下将起作用:
def newsDetailView(request, news_pk):
news = get_object_or_404(News, id=news_pk)
relative_news = News.objects.filter(tag__id__in=news.tag.all())