【问题标题】:Django-Haystack: 'NoneType' object has no attribute '_default_manager'Django-Haystack:“NoneType”对象没有属性“_default_manager”
【发布时间】:2016-04-23 11:42:50
【问题描述】:

我正在尝试将干草堆搜索添加到我的 base.html 以将其全局包含在我的网站上。但是当我提交搜索时它会出错

我得到:

Django-Haystack:“NoneType”对象没有属性“_default_manager”

我已将它添加到 INSTALLED_APPS 和我的 urls.py。 ./manage.py rebuild_index 运行良好。

models.py:

class Site(models.Model):
    site_name = models.CharField(max_length=100, blank=False, null=False)
    site_manager = models.CharField(max_length=100, blank=False, null=False)
    address_1 = models.CharField(max_length=100, blank=False, null=False)
    address_2 = models.CharField(max_length=100, blank=True, null=True)
    address_3 = models.CharField(max_length=100, blank=True, null=True)
    town_city = models.CharField(max_length=100, verbose_name='Town/City')
    county = models.CharField(max_length=100, blank=False, null=False)
    postcode = models.CharField(max_length=100, blank=False, null=False)
    region = models.CharField(max_length=100, blank=True, null=True)
    tel = models.CharField(max_length=100, blank=False, null=False)
    email = models.EmailField(max_length=100, blank=False, null=False)

    creation = models.DateField(auto_now_add=True)
    last_modified = models.DateField(auto_now=True)

    def __unicode__(self):
        return self.site_name

站点索引.py:

class SiteIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)
    site_name = indexes.CharField(model_attr='site_name')
    site_manager = indexes.CharField(model_attr='site_manager')
    address_1 = indexes.CharField(model_attr='address_1')
    address_2 = indexes.CharField(model_attr='address_2')
    address_3 = indexes.CharField(model_attr='address_3')
    town_city = indexes.CharField(model_attr='town_city')
    county = indexes.CharField(model_attr='county')
    postcode = indexes.CharField(model_attr='postcode')
    region = indexes.CharField(model_attr='region')
    tel = indexes.CharField(model_attr='tel')
    email = indexes.CharField(model_attr='email')
    creation = indexes.DateField(model_attr='creation')
    last_modified = indexes.DateField(model_attr='last_modified')

    def get_model(self):
        return Site

    def index_queryset(self, using=None):
        return self.get_model().objects.all()

site_text.txt:

{{ object.site_name }}
{{ object.site_manager }}
# ect

base.html

<form action="/search/" method="get">
     <input type="text" name="q">
     <input type="submit" value="Search">
</form>

更新:

我注意到,如果我降级到 DJango 1.8。有用。更新版本的 django 是否存在问题?

【问题讨论】:

    标签: django django-haystack django-1.9


    【解决方案1】:

    该错误是因为您的 Haystack 版本不支持您的 Django 版本。如果你想使用 Django 1.9+,你需要升级你的 django-haystack 版本

    Haystack 2.5 中添加了对 Django 1.9 的支持,Haystack 2.5.1 中添加了对 Django 1.10 的支持。

    【讨论】:

      【解决方案2】:

      您可以从 github 安装最新版本(如信号答案),但使用 pip:

      pip uninstall django-haystack
      pip install -e git+https://github.com/django-haystack/django-haystack.git#egg=django-haystack
      

      【讨论】:

      • 也有效(最新点):pip install git+https://github.com/django-haystack/django-haystack.git
      【解决方案3】:

      我通过从 github 安装最新版本(当前为 2.5.dev0)解决了这个问题:

      pip uninstall django-haystack
      git clone https://github.com/django-haystack/django-haystack
      cd django-haystack
      python setup.py install
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-08-03
        • 2018-12-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-01
        相关资源
        最近更新 更多