【问题标题】:How to filter sentences from an list of words in array in Django如何从Django中的数组中的单词列表中过滤句子
【发布时间】:2021-09-16 15:17:18
【问题描述】:

我创建了类似书籍的网站,我想通过这本书的标题显示相关书籍,建议书籍中至少 2 个单词才能准确,首先我将当前书籍的标题拆分为一系列单词,如 @ 987654321@ 并使用title__icontains 过滤书籍,但它显示一个空列表

我的问题是如何从数组中的单词列表中过滤句子? 如果有更好的方法通过标题获取相关对象,至少两个相似的词来自标题

我的书名

   class Book(models.Model):
       author = models.models.ForeignKey(Account, on_delete=models.CASCADE)
       title = models.CharField(max_length=90, null=True, blank=True)

我的功能是按标题获取相关书籍。

class BookRelatedObj(ListAPIView):
serializer_class = BookRelatedSerializer
lookup_field = 'title'
def get_queryset(self):
    book_pk = self.kwargs['pk']
    book = Video.objects.get(pk=book_pk)
    lst = book.title
    split = lst.split()

    print(split)
    return Book.objects.filter(title__icontains=[split])

【问题讨论】:

    标签: django django-models django-views django-templates


    【解决方案1】:

    我通过使用Q解决了这个问题

    def get_queryset(self):
        book_pk = self.kwargs['pk']
        book = Video.objects.get(pk=book_pk)
        lst = book.title
        split = lst.split()
    
        return Book.objects.filter(Q(title__icontains=split[0]) & Q(title__icontains=split[1]))
    

    获取标题的第一个和第二个单词,并尝试获取标题包含该单词的书籍

    【讨论】:

      【解决方案2】:

      您不需要拆分列表来确保准确性 Django 足够聪明,可以达到所需的准确度

      但如果您需要实施您的解决方案,您可以将查询编辑为

      Book.objects.filter(title__icontains__in=[split]
      

      我们已将_in 放入查询中,因为您在列表中搜索项目而不是按单词搜索

      【讨论】:

      • 显示此错误Unsupported lookup 'icontains' for CharField or join on the field not permitted, perhaps you meant icontains or contains?
      • 看看这个解决方案stackoverflow.com/q/42176275/12392336
      • 感谢您的回答我查看了解决方案,但它似乎不适合这个问题,因为我的引号之间没有空格 Book.objects.filter(title__icontains__in=[split])
      • title__icontains__in 不幸的是不受支持。它应该只是title__in
      • 可以使用iregex支持不区分大小写in:Book.objects.filter(title__iregex=r'(' + '|'.join(lst.split()) + ')')
      猜你喜欢
      • 2017-11-29
      • 1970-01-01
      • 1970-01-01
      • 2022-08-17
      • 2017-12-10
      • 1970-01-01
      • 1970-01-01
      • 2020-05-23
      • 2017-04-16
      相关资源
      最近更新 更多