1

私は(明らかに)検索にdjangoとhaystackを使用していますが、継承されたオブジェクトを含めたくありません。例えば:

モデル Person とモデル Employee (Person から継承) があるとしましょう。Employee オブジェクトが追加されると、Person オブジェクトも作成されます。個人は従業員である必要はありません。

したがって、すべての Person および Employee レコードを検索したいが、Employees でも​​ある Person オブジェクトを除外したい

これが理にかなっているといいのですが、

乾杯

4

1 に答える 1

2

is_employeePerson モデルの 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複数の人物タイプがある場合は、このフィールドをより一般的なフィールドに置き換えることもできます。

于 2011-05-23T03:46:31.723 に答える