Как ORM в Django может извлекать посторонние объекты, когда к ним обращаются

Пытались выяснить это уже пару часов и ничего не получили.

class other(models.Model):
    user = models.ForeignKey(User)


others = other.objects.all()
o = others[0]

На данный момент ORM не запросил объект o.user, но если я делаю НИЧЕГО, что касается этого объекта, он загружает его из базы данных.

type(o.user)

вызовет загрузку из базы данных.

Я хочу понять, КАК они делают это волшебство. Что такое питоническая пыльца пикси, которая заставляет его происходить. Да, я посмотрел на источник, я в тупике.

23
задан boatcoder 30 August 2010 в 03:55
поделиться