2011-05-23 80 views
1

我使用django和乾草堆進行搜索(顯然),我不希望它包括繼承對象。例如:django haystack繼承問題

可以說我有模型Person和model Employee(它繼承自Person)。當添加一個Employee對象時,它也會創建一個Person對象。人雖然不必是員工。

所以我想搜索所有人員和員工的記錄,但排除也是僱員

我希望這是有道理的,

乾杯

回答

2

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,如果你有一個以上的人的類型替換該領域。