我有两个型号:
models.py
class model1 (models.Model):
field1_model1 = models.CharField()
filed2_model1 = models.CharField()
class model2 (models.Model):
field1_model2 = models.ForeignKey(model1)
field2_model2 = models.CharField()
Run Code Online (Sandbox Code Playgroud)
使用Haystack我想基于filed1_model1进行文本搜索,但是当我这样做时,我想在搜索结果中显示filed2_model2.
search_indexes.py以及search.html模板文件中的内容是什么?
嗨,我使用带有 woosh 的 haystack 作为搜索引擎:
我的模型如下
class Person(models.Model):
personid = models.IntegerField(primary_key = True, db_column = 'PID')
firstname = models.CharField(max_length = 50, db_column = 'FIRSTNAME')
lastname = models.CharField(max_length = 50, db_column = 'LASTNAME')
class Meta:
db_table = '"TEST"."PERSON"'
managed = False
class TDoc(models.Model):
tdocid = models.IntegerField(primary_key = True, db_column = 'TDOCID')
person = models.ForeignKey(Person, db_column = 'PID')
content = models.TextField(db_column = 'CONTENT', blank = True)
filepath = models.TextField(db_column = 'FILEPATH', blank = True)
class Meta:
db_table = '"TEST"."TDOC"'
managed = False …Run Code Online (Sandbox Code Playgroud) 我想我不会正确地解读django-haystack:
我有一个包含几个字段的数据模型,我想搜索其中两个:
class UserProfile(models.Model):
user = models.ForeignKey(User, unique=True, default=None)
twitter_account = models.CharField(max_length=50, blank=False)
Run Code Online (Sandbox Code Playgroud)
我的搜索索引设置:
class UserProfileIndex(SearchIndex):
text = CharField(document=True, model_attr='user')
twitter_account = CharField(model_attr='twitter_account')
def get_queryset(self):
"""Used when the entire index for model is updated."""
return UserProfile.objects.all()
Run Code Online (Sandbox Code Playgroud)
但是当我执行搜索时,只搜索字段"username"; "twitter_account"被忽略.当我通过dbshell选择Searchresults时,对象包含"user"和"twitter_account"的正确值,但结果页面显示"无结果":
{% if query %}
<h3>Results</h3>
{% for result in page.object_list %}
<p>
<a href="{{ result.object.get_absolute_url }}">{{ result.object.id }}</a>
</p>
{% empty %}
<p>No results</p>
{% endfor %}
{% endif %}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?