Django Haystack为搜索添加附加输入

2024-09-26 22:10:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个干草堆搜索目前在以下模型搜索效果良好:

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

我的search_indexes.py

^{pr2}$

但是现在我想在我的搜索表单的下拉列表中添加额外的搜索参数,它有两个值['Admin', 'Staff'],因为我添加了另一个模型:

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

如果选择的下拉列表是“Staff”,并且选择了StaffEntry是“Admin”,我想搜索StaffEntry。有人能帮助我如何实现这一点使用草垛呼呼?提前谢谢。在


Tags: 模型truenumbermodelmodelsproductnulllength
2条回答

表单.py

类搜索(SearchForm):

         OPTIONS = [
                ('staff','Staff'),
                ('admin','Admin')
               ]

          option = forms.ChoiceField(
                    widget=forms.Select(
                        attrs={'class':'cd-select','id':'cd-dropdown'}),
                        label='',
                        choices=OPTIONS,
                        )
         def __init__(self, *args, **kwargs):
             super(Search, self).__init__(*args, **kwargs)
             self.initial['option'] = 'staff'
             self.fields['q'].label = ''



        def search(self):
            if not self.is_valid():
                 return self.no_query_found()
            if not self.cleaned_data.get('q'):
                 return self.no_query_found()
            sqs = self.searchqueryset.auto_query(self.cleaned_data['q'])

            if self.cleaned_data['option'] == 'staff':
                 sqs = SearchQuerySet().auto_query(self.cleaned_data['q']).models(Staff)
            elif self.cleaned_data['option'] == 'admin':
                 sqs = SearchQuerySet().auto_query(self.cleaned_data['q']).models(Admin)
            if self.load_all:
                 sqs = sqs.load_all()
            return sqs

您要的是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。在

相关问题 更多 >

    热门问题