代码之家  ›  专栏  ›  技术社区  ›  AntoineLB

Django:夹层前搜索模块

  •  2
  • AntoineLB  · 技术社区  · 6 年前

    我在Django的应用程序中使用 mezzanine .

    我已经指定了可以这样搜索的模型:

    SEARCH_MODEL_CHOICES = ('organization-pages.CustomPage',
                            'organization-network.DepartmentPage',
                            'organization-network.TeamPage',
                            'organization-network.Person',
                            'organization-projects.ProjectTopicPage',
                            'pages.Page',
                            'organization-media.Playlist',
                            'mezzanine_agenda.Event',
                            'organization-projects.Project',
                            'shop.Product',
                            'organization-magazine.Article')
    
    PAGES_MODELS = ('organization-pages.CustomPage',
                    'organization-magazine.Topic',
                    'organization-network.DepartmentPage',
                    'organization-network.TeamPage',
                    'organization-projects.ProjectTopicPage',
                    'shop.Product')
    
    SEARCH_PARENTS_MODELS = ('organization-network.Person',)
    

    我还没有接触过夹层的任何源代码。

    我正在使用Django模型翻译,有一个这样的对象:

    d = DepartementPage.objects.create()
    d.title_fr = 'french'
    d.title_en = 'english'
    

    如果我尝试用夹层的搜索引擎搜索它,我只会在输入当前所用语言的标题时找到它。

    我的意思是,如果我使用的是英语应用程序,我不会让我的对象搜索“法语”,而它 should do

    你知道我的问题来自哪里吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   tatlar    6 年前

    使用上面代码中指定的模型:

    d = DepartementPage.objects.create()
    d.title_fr = 'french'
    d.title_en = 'english'
    

    您应该能够通过在 views.py :

    query = "search string"
    search_fields = ("title_fr", "title_en")
    results = DepartementPage.objects.search(query, search_fields=search_fields)
    

    来自 docs :

    如果 search_fields 调用中未提供 search ,使用的字段将是为模型指定的默认字段。

    您还没有发布其余的模型字段,但我认为您还具有默认值 title 字段(和 title_fr , title_en 正在由自动生成 django-modeltranslation 应用程序)。这个 标题 字段是默认字段,因此将是搜索结果中包含的唯一字段。祝你好运!

    推荐文章