나는 장황한 모델 객체에 문제가있다. 내가 사용하려고 할 때 적용하고자하는 다소 복잡한 고유성/구별 성 제약을 위해 __hash__
()을 재정의했다. 이것은 메모리에서 직접 인스턴스화했지만 데이터베이스에서 검색하는 객체가 아니라 객체에서 올바르게 작동합니다. 이처럼Django : 데이터베이스의 객체에서 __hash__이 (가) 작동하지 않습니까?
:
class Animal(models.Model):
name = model.Charfield('name', max_length=10)
def__hash__(self):
return len(self.name) # silly example for purposes of illustration
다음이 :
>> a = models.Animal(name='cat')
>> b = models.Animal(name='dog')
>> len(set((a,b))
> 1
>> a.save()
>> b.save()
>> len(set(models.Animal.objects.all()))
> 2
흠. 여기에 사용 된 해쉬 함수가 무엇이든, 그것은 내 것이 아닙니다. 나는 그것이 완전히 인스턴스화 된 상태에 있지 않은 게으른 인출/객체와 관련이 있다고 생각합니다. 그러나 그것을 얻는 방법은 무엇입니까?
실제로 그렇습니다. 고맙습니다. – AlanL