5
Django模型實例Hashable?例如,我可以使用Django Model實例作爲字典鍵,還是創建一組獨特的模型?Django模型實例Hashable?
如果它們是Hashable,是什麼導致兩個Django Model實例被視爲相同?它是否天真地實現了Hashable,如果它們在內存中是相同的Python對象,或者它以某種方式使用Model實例的值,那麼它只會認爲它們是相同的?
Django模型實例Hashable?例如,我可以使用Django Model實例作爲字典鍵,還是創建一組獨特的模型?Django模型實例Hashable?
如果它們是Hashable,是什麼導致兩個Django Model實例被視爲相同?它是否天真地實現了Hashable,如果它們在內存中是相同的Python對象,或者它以某種方式使用Model實例的值,那麼它只會認爲它們是相同的?
模型實例是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()
你試過嗎?你發現了什麼?此外,*爲什麼*你想讓他們成爲,你想達到什麼目的? –
相關/重複http://stackoverflow.com/questions/7042530/django-is-it-reasonable-to-use-objects-as-dictionary-keys –
我需要密鑰本身作爲一個對象在同一個地方我需要字典的價值,它的工作原理令人驚訝。另外,正如@VajkHermecz所說,這是一個重複的問題,更多的細節在那裏。 – pablete