Django 搜索同一模型中的一个或另一个属性
我正在尝试使用Haystack,并希望设置一个搜索引擎: 在同一个模型中,我希望能够在属性a中搜索或在属性b中搜索 我的模型结构如下所示:Django 搜索同一模型中的一个或另一个属性,django,django-haystack,Django,Django Haystack,我正在尝试使用Haystack,并希望设置一个搜索引擎: 在同一个模型中,我希望能够在属性a中搜索或在属性b中搜索 我的模型结构如下所示: Datas : a b date 我在search_index.py中尝试了以下代码: 但没有成功: ImproperlyConfigured("Model '%s' has more than one 'SearchIndex`` hand ling it. Please exclude either '%s' or '%
Datas : a
b
date
我在search_index.py中尝试了以下代码:
但没有成功:
ImproperlyConfigured("Model '%s' has more than one 'SearchIndex`` hand
ling it. Please exclude either '%s' or '%s' using the 'HAYSTACK_EXCLUDED_INDEXES
' setting." % (model, self.indexes[model], index))
django.core.exceptions.ImproperlyConfigured: Model '<class 'mainsite.models.Datas'>' has more than one 'SearchIndex`` handling it. Please exclude either '<ma
insite.search_indexes.ADatasIndex object at 0x03176DF8>' or '<mains
ite.search_indexes.BDatasIndex object at 0x031AD8F0>' using the 'HAYSTACK
_EXCLUDED_INDEXES' setting.
错误是您从同一模型的两个SearchIndex类中获取结果 您只需要一个SearchIndex,然后两个字段都将放在数据模板上
class DatasIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
a = indexes.CharField(model_attr='a')
b = indexes.CharField(model_attr='b')
date = indexes.DateTimeField(model_attr='date')
def get_model(self):
return Datas
def index_queryset(self, using=None):
"""Used when the entire index for model is updated."""
return self.get_model().objects.filter(date__lte=datetime.datetime.now())
然后,在模板目录中创建一个文件:
搜索/索引/myapp/datas_text.txt
在该文件中:
{{ object.a }}
{{ object.b }}
以及您要搜索的任何其他字段
这方面的haystack文档是:您可以使用本haystack中提到的代理模型 然后在BDatasIndex中
def get_model(self):
return BDatas
好的,但也许我解释得很糟糕:我希望能够只在属性a中搜索,或者只在属性b中搜索,或者两者都搜索。您的解决方案仅适用于属性a和b搜索。是的,也许我们彼此不了解。使用此方法,如果搜索erwan,它将返回在字段a或字段b中包含erwan的任何数据对象。尝试运行./manage.py rebuild\u index以确保所有内容都在索引中。
class BDatas(Datas):
class Meta:
proxy = True
def get_model(self):
return BDatas