社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Django

如何在Django中从数组中的单词列表中筛选句子

Ahmed • 3 年前 • 1103 次点击  

我创建了like books网站,我想通过这本书的标题来显示相关的书,至少用2个单词来准确地显示推荐书,首先我将当前书的标题拆分为一系列单词,如 ['good', 'book', 'by', 'mickle'] 并使用 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])
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/132332
 
1103 次点击  
文章 [ 2 ]  |  最新文章 3 年前
Hady
Reply   •   1 楼
Hady    4 年前

你不需要一份精确的列表 Django足够聪明,可以获得所需的精度

但如果需要实现解决方案,可以编辑查询以

Book.objects.filter(title__icontains__in=[split]

我们已经把 _in 查询失败,因为您在列表中搜索项目,而不是按单词搜索

Ahmed
Reply   •   2 楼
Ahmed    4 年前

我用电脑解决了这个问题 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]))

这将获得标题的第一个和第二个单词,并尝试获得包含这些单词的书籍标题