난 그냥 EveryBlock의 소스 코드를 찾고 있었고, 난 경고/models.py 코드이 코드주의 :장고의 특성 캐시 - 요점은 무엇입니까?
def _get_user(self):
if not hasattr(self, '_user_cache'):
from ebpub.accounts.models import User
try:
self._user_cache = User.objects.get(id=self.user_id)
except User.DoesNotExist:
self._user_cache = None
return self._user_cache
user = property(_get_user)
내가 무리의 주위에이 패턴을 발견했습니다,하지만 꽤 사용을 이해하지 못하는 . 전체 아이디어는 FK 자체 (자체 = 경고 개체)에 액세스 할 때 DB에서 한 번만 사용자 개체를 잡을 수 있는지 확인해야합니까? 왜 당신은 DB 캐싱 amd django의 ForeignKey() 필드에 의존하지 않았을까요? 모델 정의에는 외래 키 필드가 아닌 사용자 ID 만 포함된다는 사실을 알게되었습니다.
class EmailAlert(models.Model):
user_id = models.IntegerField()
...
통찰력을 주시면 감사하겠습니다.