Skip to main content
 首页 » 编程设计

python之Django : Mezzanine front search module

2024年12月31日30rubylouvre

我在使用 mezzanine 的 Django 应用程序中遇到问题.

我指定了可以通过这种方式搜索的模型:

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',) 

而且我没有接触过 Mezzanine 的任何源代码。

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

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

如果我尝试使用 Mezzanine 的搜索引擎搜索它,只有输入我当前使用的语言的标题才能找到它。

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

你知道我的问题从何而来吗?

请您参考如下方法:

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

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 :

If search_fields is not provided in the call to search, the fields used will be the default fields specified for the model.

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