Djangoモデルのインスタンスはハッシュ可能ですか? たとえば、Django モデル インスタンスを辞書キーとして使用したり、一意のモデルのセットを作成したりできますか?
それらが Hashable である場合、2 つの Django Model インスタンスが同じと見なされる原因は何ですか? Hashable を素朴に実装して、メモリ内の同じ Python オブジェクトである場合にのみ同じと見なすようにしますか、それとも Model インスタンスの値を何らかの方法で使用しますか?
Djangoモデルのインスタンスはハッシュ可能ですか? たとえば、Django モデル インスタンスを辞書キーとして使用したり、一意のモデルのセットを作成したりできますか?
それらが Hashable である場合、2 つの Django Model インスタンスが同じと見なされる原因は何ですか? Hashable を素朴に実装して、メモリ内の同じ Python オブジェクトである場合にのみ同じと見なすようにしますか、それとも Model インスタンスの値を何らかの方法で使用しますか?
モデル インスタンスは Hashable です。同じタイプのモデルで、同じ主キーを持つ場合、それらは同じであると見なされます。これは で定義されて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()