Skip to main content
 首页 » 编程设计

python之Django Haystack 添加额外的搜索输入

2025年05月04日29powertoolsteam

我有一个 haystack 搜索,目前在以下模型上搜索效果很好:

class AdminEntry(models.Model): 
    product = models.ForeignKey('Product') 
    number_entries = models.IntegerField(max_length=3,  null=True) 

我的search_indexes.py:

class AdminEntryIndex(SearchIndex): 
    text = CharField(document=True, use_template=True) 
    author = CharField(model_attr='product__author') 
    title = CharField(model_attr='product__title') 
    desc = CharField(model_attr='product__desc') 
 
    def get_queryset(self): 
        return AdminEntry.objects.all() 
 
site.register(AdminEntry, AdminEntryIndex) 

但现在我想在我的搜索表单的下拉列表中添加额外的搜索参数,因为我添加了另一个模型:

class StaffEntry(models.Model): 
    product = models.ForeignKey('Product') 
    number_entries = models.IntegerField(max_length=3,  null=True) 

如果选择的下拉菜单是“Staff”,并且 AdminEntry 是“Admin”,我希望我的搜索在 StaffEntry 上搜索。有人可以帮助我如何使用 Haystack 和 Whoosh 来实现这一目标吗?提前致谢。

请您参考如下方法:

您要查找的是 ModelSearchForm:

http://django-haystack.readthedocs.org/en/latest/views_and_forms.html#modelsearchform

使用它代替默认的 SearchForm,您将获得每个索引模型的复选框。如果您扩展表单,您将能够将其更改为选择而不是复选框。

参见 http://django-haystack.readthedocs.org/en/latest/views_and_forms.html#views有关如何在 View 中使用自定义表单的信息。