Последствия переопределения __hash__ в моделях Django?

У меня есть довольно сложная потенциально трудоемкая система, в которой экземпляры моделей Django хранятся и "индексируются" (для фактического назначения системы и для кэширования для повышения производительности во время ее выполнения) в наборах и dicts.

Над ними выполняются тысячи операций CRUD. Поскольку эти хэшируемые экземпляры хранятся, это означает, что метод модели Django __hashable__ выполняется тысячи раз:

class Model(object):

    ...

    def __hash__(self):
        return hash(self._get_pk_val())

Как бы эффективно это ни было, при многократном вызове это увеличивает временную производительность. Когда я использую модель pk в качестве диктующих ключей или в наборах, улучшение производительности заметно.

Теперь, я не могу просто заменить все эти экземпляры на pks с практической точки зрения, поэтому я думал переопределить метод следующим образом во всех соответствующих моделях:

def __hash__(self):
    return self._get_pk_val()

Отказ от накладных расходов на функции hash.

Каковы будут последствия и следствия этого изменения? Поскольку мы знаем, что pk уникален, не будет ли это служить той же цели с точки зрения индексирования? Зачем Django нужно хэшировать pk?

Вернуться на верх