(используя в качестве примера django; в примере неявно используется ForeignKey)
>>> from coconuts.models import Coconut, Swallow
>>> c1 = Coconut.objects.get(id=1)
>>> s = Swallow.objects.get(id=1)
>>> c2 = s.coconuts_carried.filter(id=1)
>>> c1 == c2
True
>>> c1 is c2
False
Насколько я понимаю, «is» проверяет идентичность, а == проверяет равенство. В этом случае c1 и c2 - это один и тот же точный объект. Почему "не" они одно и то же?