Трясогузка: поиск страницы и родителя с базой данных БД

Я новичок в трясогузке / Джанго. Начать было довольно легко, и я запустил и запустил приложение. Однако я столкнулся с проблемой, когда искал. Приложение довольно маленькое, и я хотел бы использовать базу данных (или MSSQL). Я искал все вокруг, но на удивление не сумел найти решение. Надеюсь заполучить ее:-)

У меня есть страница со встроенными элементами. Упрощенный ниже

class BlockPage(Page):
    content = RichTextField()

    content_panels = Page.content_panels + [
        FieldPanel('content'),
        InlinePanel('rel_page_blocks', label="Markup blocks"),
    ]

    search_fields = [
        index.SearchField('content', partial_match=True),  
        index.RelatedFields('rel_page_blocks', [
            index.SearchField('block_content', partial_match=True),
        ]),
        index.FilterField('live'),
    ]

Встроенная панель определяется следующим образом

class Blocks(index.Indexed, Orderable):
    page = ParentalKey(BlockPage, related_name='rel_page_blocks')
    block_content = RichTextField()

    panels = [
        FieldPanel('block_content'),
   ]

Все идет нормально. Теперь я хотел бы найти страницу с ее встроенными блоками. Я успешно выполнил поиск на странице, но блоки не были найдены. Я знаю, что эта проблема решается с помощью поиска Elastic, но это не вариант для меня.

Ее это views.py

def search(request):
    search_query = request.GET.get('query', None)
    page = request.GET.get('page', 1)

    # Search
    if search_query:
        blocks_results = BlockPage.objects.live().search(search_query)     
        blocks_result_ids = [p.page_ptr.id for p in blocks_results]

# I get a result using this but I would like it to be attached to the 
# parent so when viewing the result I can refere/show the parent BlockPage
# The question is how to attach "r" to the parent result?  
 r = get_search_backend().search(search_query, Blocks)

    page_ids = blocks_result_ids + **other page ids**
    search_results = Page.objects.filter(id__in=page_ids)        

    query = Query.get(search_query)
    # Record hit
    query.add_hit()
else:
    search_results = Page.objects.none()

return render(request, 'search/search.html', {
    'search_query': search_query,
    'search_results': search_results,
})

Любая подсказка будет принята с благодарностью. Мне здесь всего пару дней, поэтому, пожалуйста, имейте это в виду, если у вас есть решение.

0 ответов

Другие вопросы по тегам