Django 搜索同一模型中的一个或另一个属性

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 '%

我正在尝试使用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 '%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