簡體   English   中英

(Haystack,Woosh,Django)搜索結果不會顯示

[英](Haystack, Woosh, Django) Search Results won't show up

因此,我最近將用戶搜索添加到了我的網站。 但是,當我按位置或學科查找時,什么也沒有顯示。 用戶個人資料具有指向用戶的鏈接。 例如,我有一個洛杉磯的用戶個人資料對象和一個新聞學學科。 但是,如果我搜索洛杉磯,什么都不會彈出。 即使我選中“在用戶配置文件中搜索”框,也是如此。

views.py

def search(request):
    context = RequestContext(request)
    render_to_response('search.html', context )

models.py

class UserProfile(models.Model):
#this line is required. Links MyUser to a User Model
user = models.OneToOneField(User, related_name ="profile")

#Additional Attributes we wish to include
date_of_birth = models.FloatField(blank=False)
phone = models.CharField(max_length=10, blank = True)
city = models.CharField(max_length=40, blank = True)
state = models.CharField(max_length=2, blank = True)
zipCode = models.CharField(max_length=5, blank = True)
admin = models.BooleanField(default=False, blank = True)
mentor = models.BooleanField(default=False, blank = True)
mentee = models.BooleanField(default=False, blank = True)
# profilepicture = models.ImageField()
#is_staff = True
tagline = models.CharField(max_length=70, blank = True, default="Let's do this!")
interests = models.ManyToManyField(Interest, related_name="interest", symmetrical = False)
primaryDiscipline = models.ForeignKey(Discipline, default=False, blank = True)
addtlDisciplines = models.ManyToManyField(Discipline, related_name="disciplines", symmetrical=False)

干草堆特定文件

search_indexes.py

import datetime
from haystack import indexes
from myapp.models import UserProfile


class UserIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)
    primaryDiscipline = indexes.CharField(model_attr='primaryDiscipline')
    location = indexes.CharField(model_attr='city')

    def get_model(self):
        return UserProfile

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

search.html

{% extends 'base.html' %}

{% block content %}
    <h2>Search</h2>

    <form method="get" action=".">
        <table>
            {{ form.as_table }}
            <tr>
                <td>&nbsp;</td>
                <td>
                    <input type="submit" value="Search">
                </td>
            </tr>
        </table>

        {% if query %}
            <h3>Results</h3>

            {% for result in page.object_list %}
                <p>
                    <a href="{{ result.object.get_absolute_url }}">{{ result.object.title }}</a>
                </p>
            {% empty %}
                <p>No results found.</p>
            {% endfor %}

            {% if page.has_previous or page.has_next %}
                <div>
                    {% if page.has_previous %}<a href="?q={{ query }}&amp;page={{ page.previous_page_number }}">{% endif %}&laquo; Previous{% if page.has_previous %}</a>{% endif %}
                    |
                    {% if page.has_next %}<a href="?q={{ query }}&amp;page={{ page.next_page_number }}">{% endif %}Next &raquo;{% if page.has_next %}</a>{% endif %}
                </div>
            {% endif %}
        {% else %}
            {# Show some example queries to run, maybe query syntax, something else? #}
        {% endif %}
    </form>
{% endblock %}

userprofile_text.txt

{{ object.title }}
{{ object.user.get_full_name }}
{{ object.body }}

您的問題與您的index_queryset有關。 更改

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

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

然后重建索引。

index_queryset是您的默認QuerySet,這是您的搜索將過濾以提供給您結果的內容。 以前是進行此操作的,所以您的默認QuerySet被本質上是location=Null過濾,在QuerySet中留下了0個項目。

django-haystack文檔來源

如果您在此之后仍然遇到困難,請隨時發表評論。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM