проблемы при поиске моделей в трясогузке django
У меня небольшой кризис в поиске моделей в трясогузке 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)
это дает мне ошибку
Невозможно неявно преобразовать объект RecipePage в str
Когда я это сделаю
recipes = recipes.search(filter_name, recipes.title) or recipes = recipes.search(filter_name, recipes.objects)
Это дает мне
Объект "PageQuerySet" не имеет атрибута "title"
Я окаменел. Что я делаю не так?
1 ответ
Когда вы посмотрите документацию для поиска в трясогузке, вы увидите, что есть два способа поиска в трясогузке, которые, я думаю, вы перепутали. Первый из них наиболее очевиден: просто передается поисковый запрос методу поиска в QuerySet. Второй - передача условия поиска и QuerySet методу поиска search_backend.
В вашем случае либо:
Удалите QuerySet из своего search
вызов:
recipes = recipes.search(filter_name)
или:
Передайте поисковый запрос и QuerySet в search_backend:
из wagtail.search.backends import get_search_backend
s = get_search_backend()
s.search(filter_name, recipes)