在wagtail Django中搜索模型时遇到的问题

2024-10-08 21:13:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我在wagtail django中搜索模型时遇到了一些危机

这是我的模型对象代码

recipes = RecipePage.objects.child_of(self).live().public() \
        .select_related('listing_image')
    extra_url_params = ''
    error_message=False
    filter_categories_raw = request.GET.get('categories')
    filter_categories = False
    filter_name = request.GET.get("name")
    
    if filter_categories_raw:
        filter_categories = []
        filter_categories_raw = filter_categories_raw.split(",")
        for fc in filter_categories_raw:
            try:
                value = int(fc)
                filter_categories.append(value)
            except ValueError:
                filter_categories = False
                error_message = "Invalid category value"

    if filter_categories:
        for filter_category in filter_categories:
            recipes = recipes.filter(categories__category=filter_category)
    
    if filter_name:
        recipes = recipes.search(filter_name, recipes) <---- issue here
        
    if not filter_name:
        filter_name=""

我添加的RecipePage模型

search_fields = BasePage.search_fields + [
    index.SearchField('title'),
]

现在当我这样做是为了搜索

recipes = recipes.search(filter_name, recipes)

这给了我错误

Can't convert 'RecipePage' object to str implicitly

当我这么做的时候

recipes = recipes.search(filter_name, recipes.title) or recipes = recipes.search(filter_name, recipes.objects)

它给了我

'PageQuerySet' object has no attribute 'title'

我醉了。我做错了什么


Tags: name模型falsesearchrawifobjectstitle
1条回答
网友
1楼 · 发布于 2024-10-08 21:13:50

当你看docs for searching in Wagtail时,你会发现有两种方法可以在Wagtail中搜索,我认为你把它们弄混了。第一个是最明显的,只需将搜索词传递给QuerySet上的搜索方法。第二种方法是将搜索词和查询集传递给search_后端的搜索方法

在您的情况下:

search调用中删除查询集:

 recipes = recipes.search(filter_name)

或:

将搜索词和查询集传递到search_后端:

从wagtail.search.backends导入获取\u搜索\u后端

s = get_search_backend()
s.search(filter_name, recipes)

相关问题 更多 >

    热门问题