django manage

1675 단어 django
관리자(manage)는 Django 응용 프로그램에 제공하는 데이터베이스 조회 조작의 인터페이스입니다.Django 프로그램의 모든 모델에는 최소한 하나의 관리자 대상이 있습니다.
Django는 기본적으로 모든 모델에 Objects라는 관리자를 자동으로 추가합니다.단, Objects를 필드 이름으로 사용해야 한다면, Objects라는 이름을 사용하고 싶지 않거나, 모델에 사용자 정의 이름을 지정할 수도 있습니다.모델에 모델을 정의하면.Manager () 유형의 속성은 관리자 객체입니다.
from django.db import models

class Person(models.Model):

      ... people = models.Manager() 
 
이 예에서 Person.objects.all ()는 이상을 일으키고 Person.people.all ()는 모든 Person 객체를 제공합니다.
Book.objects.all ()에서 objetcs는 Manager의 예입니다.그렇다면 언제 자신의 관리자를 맞춤형으로 만들어야 하나요?
 
만약 Person에게.objects.get()memcached get 데이터를 통해cache에 있는지 없는지 데이터베이스에서 데이터를 조회하면 개인 관리자를 맞춤형으로 만들 수 있습니다.
 
class CacheBaseManager(models.Manager): 
     def get(self, *arg, **kwargs):
        id = kwargs.get("id", 0)
        uid = kwargs.get("user__id", 0) or kwargs.get("user__id__exact", 0)
        key = id and cf.generate_cache_key(id, self.model) or \
            uid and cf.generate_cache_key("uid:%s" % uid, self.model)
        model = key and cache.get(key)
        #   id          
        if not model:
            model =  super(CacheBaseManager, self).get(*arg, **kwargs)
            cache.set(key, model, 60*60)
        else:
            if dir(self.model()) != dir(model):
                model =  super(CacheBaseManager, self).get(*arg, **kwargs)
                cache.set(key, model, 60*60)
            logging.debug("cache hit >> [%s]" % key)
            
        return model

좋은 웹페이지 즐겨찾기