我正在使用 django 和 haystack 进行搜索(显然),我不希望它包括继承的对象。例如:
假设我有模型 Person 和模型 Employee(它继承自 Person)。添加 Employee 对象时,它还会创建一个 Person 对象。人不必是雇员。
所以我想搜索所有 Person 和 Employee 记录,但排除同时也是Employees的Person对象
我希望这是有道理的,
干杯
我正在使用 django 和 haystack 进行搜索(显然),我不希望它包括继承的对象。例如:
假设我有模型 Person 和模型 Employee(它继承自 Person)。添加 Employee 对象时,它还会创建一个 Person 对象。人不必是雇员。
所以我想搜索所有 Person 和 Employee 记录,但排除同时也是Employees的Person对象
我希望这是有道理的,
干杯
is_employee
您可以为 Person 模型向 SearchIndex 类添加一个字段。
class Person(models.Model):
# your existing code goes here
@property
def is_employee(self):
try:
self.employee # try to get the associated Employee object
return True
except Employee.DoesNotExist:
return False
class PersonSearchIndex(SearchIndex):
# your existing code goes here
is_employee = BooleanField(model_attr='is_employee')
之后,您可以使用此字段排除同时也是员工的人员。
query = SearchQuerySet().filter(is_employee=False)
person_type
如果您有多个人员类型,您还可以将此字段替换为更通用的字段。