Джанго Хейстек проблемы наследования - PullRequest
1 голос
/ 23 мая 2011

Я использую django и haystack для поиска (очевидно), и я не хочу его, включая унаследованные объекты.Например:

Допустим, у меня есть модель Person и модель Employee (которая наследуется от Person).Когда объект Employee добавляется, он также создает объект Person.Персона не обязательно должна быть Сотрудником.

Поэтому я хочу найти все записи Персона и Сотрудник, но исключить объекты Персона, которые также являются Сотрудниками

Надеюсь, это имеет смысл,

Приветствия

1 Ответ

2 голосов
/ 23 мая 2011

Вы можете добавить поле is_employee в свой класс SearchIndex для модели Person.

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, если у вас есть несколько типов людей.

...