首页 > 解决方案 > 精确查找的 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
    })

有朋友可以帮忙吗?非常感谢!

标签: pythondjangodjango-modelsdjango-views

解决方案


以下将起作用:

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())

推荐阅读