地址對象確實被高速緩存。你可以看到這一點,如果你之前和訪問user.address
後打印的user.__dict__
內容。例如:
>>> user.__dict__
{'date_joined': datetime.datetime(2010, 4, 1, 12, 31, 59),
'email': u'[email protected]',
'first_name': u'myfirstname',
'id': 1L,
'is_active': 1,
'is_staff': 1,
'is_superuser': 1,
'last_login': datetime.datetime(2010, 4, 1, 12, 31, 59),
'last_name': u'mylastname',
'password': u'sha1$...$...',
'username': u'myusername'}
>>> country = user.address.country
>>> user.__dict__
{'_address': <myapp.models.address object at 0xwherever,
'email': u'[email protected]',
...etc}
所以用戶對象獲得,其用於在相關對象上後續查找一個_address
對象。
您可以使用select_related()
當你第一次得到了用戶甚至訪問地址之前,預填充這個緩存,所以你只打了一次數據庫。