2012-11-14 2 views
5

Django 모델 인스턴스가 Hashable입니까? 예를 들어 Django Model 인스턴스를 사전 키로 사용하거나 고유 모델 세트를 만들 수 있습니까?Django 모델 인스턴스가 Hashable입니까?

Hashable 인 경우 두 개의 Django Model 인스턴스가 동일한 것으로 간주되는 이유는 무엇입니까? Hashable을 순진하게 구현하여 메모리에있는 동일한 Python 객체이거나 또는 어떤 식 으로든 Model 인스턴스의 값을 사용하는 경우에만 동일하게 간주합니다.

+3

그렇게하려고 했습니까? 뭘 찾았 니? 게다가 * 왜 * 당신이 그 (것)들을 원하십니까? 달성하려는 것은 무엇입니까? –

+5

관련/중복 http://stackoverflow.com/questions/7042530/django-is-it-reasonable-to-use-objects-as-dictionary-keys –

+0

동일한 장소에서 객체로 키 자체가 필요했습니다. dict의 가치가 필요했습니다. 놀랍게도 효과가 있습니다. 또한 @ VajkHermecz가 말했듯이, 중복 질문입니다. 자세한 내용이 있습니다. – pablete

답변

9

모델 인스턴스는 Hashable입니다. 그들은 동일한 유형의 모델이고 동일한 기본 키를 가진 경우 동일한 것으로 간주됩니다. 당신은 이것을 볼 수 있습니다 defined in django.db.models.base :

class Model(object): 

    ... 

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

    ... 

    def __eq__(self, other): 
     return isinstance(other, self.__class__) and \ 
       self._get_pk_val() == other._get_pk_val()