Я хочу использовать фильтр независимо от пробельных символов в djangorestframework

у меня есть

class KceeService:

    def getTbBookCrwalingByTitleAndWriter(title, writer):
        bookData = []
        queryset = tb_book_crawling.objects.filter(title__icontains=title, 
        writer__icontains=writer).order_by('-publish_date')

        for query in queryset:
            bookData.append(TbBookCrawlingSerializer(query).data)
    
        return bookData 

but title = 'new york 1' , реальные данные колонки = 'new york1'

Итак, bookData это []

как использовать данные title & column для преодоления пробелов?

Мне нужна твоя помощь.

спасибо, вы

я удалил пробелы .

но, многие названия имеют те же проблемы.

как использовать filter() для преодоления пробелов.

Одним из вариантов может быть разделение поискового запроса по пробелам и проверка наличия каждого отдельного слова.

class KceeService:

    def getTbBookCrwalingByTitleAndWriter(title, writer):
        queryset = tb_book_crawling.objects.filter(writer__icontains=writer)
        search_terms = title.split()
        if len(search_terms) == 0:
            # This is optional - remove this if you want to allow users to enter an empty search.
            raise ParseError("No search terms")
        for search_term in search_terms:
            queryset = queryset.filter(title__icontains=search_term)

        queryset = queryset.order_by('-publish_date')

        bookData = [TbBookCrawlingSerializer(query).data for query in queryset]
    
        return bookData 

Так, поисковый запрос "new york 1" проверит, что "new", "york" и "1" появились в вашем названии.

В этом случае будут некоторые странные эффекты - если вы ищете "дом смеха", он также будет соответствовать "скотобойне". Но это может быть нормально для вашего приложения - я не знаю.

Вернуться на верх