我在Django中有两个模型,如下(伪代码)
class Medicine(db.Model):
field_1 = db.CharField()
field_2 = db.CharField()
class Application(db.Model):
field_1 = db.CharField()
field_2 = db.CharField()
medicine = db.ForeignKey(Medicine)
有1:M。一种药可以有很多应用。
我需要在Application
的字段上进行分析,但只显示相关的Medicine
个对象。类似于SQL中的DISTINCT。
用haystack实现这一目标最直接的方法是什么?
我是否SearchIndex
或Medicine
Application
?如果我为SearchIndex
设置Application
,如何检测/过滤重复的Medicine
个对象?
答案 0 :(得分:3)
我在干草堆邮件列表上的Daniel Lindsay(Haystack / pySolr作者)的帮助下解决了这个问题。
from haystack import indexes
class Medicine(indexes.SearchIndex):
field_1 = indexes.MultiValuedField(faceted=True)
# Other field definitions
def prepare_field_1(self, object):
values = list()
for app in object.applications.all():
values.append(app.field_on_which_to_facet)
return values
# define "prepare_fieldname" methods for other fields in similar fashion.
索引需要一些时间,因为要编制索引的数据量很大,但却很有魅力。