동일한 데이터베이스의 각 웹 사이트에 대한 개체 액세스 수를 계산하는 응용 프로그램이 있습니다.모델/관리자와 관련된 문제 쿼리
class Model(SimpleHitBase):
name = models.CharField(max_length=255)
url = models.CharField(max_length=255)
rss = models.CharField(max_length=255)
creation = AutoNowAddDateTimeField()
update = AutoNowDateTimeField()
그래서, 내 문제는 이것이다 : 나는 Model.objects.all()
를 호출 할 때, 나는 SQL (안 두)에 대한 하나 개의 요청을하고 싶은
class SimpleHit(models.Model):
"""
Hit is the hit counter of a given object
"""
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
site = models.ForeignKey(Site)
hits_total = models.PositiveIntegerField(default=0, blank=True)
[...]
class SimpleHitManager(models.Manager):
def get_query_set(self):
print self.model._meta.fields
qset = super(SimpleHitManager, self).get_query_set()
qset = qset.filter(hits__site=settings.SITE_ID)
return qset
class SimpleHitBase(models.Model):
hits = generic.GenericRelation(SimpleHit)
objects = SimpleHitManager()
_hits = None
def _db_get_hits(self, only=None):
if self._hits == None:
try:
self._hits = self.hits.get(site=settings.SITE_ID)
except SimpleHit.DoesNotExist:
self._hits = SimpleHit()
return self._hits
@property
def hits_total(self):
return self._db_get_hits().hits_total
[...]
class Meta:
abstract = True
와 나는 같은 모델을 가지고있다. 이 경우 : 하나는 모델에 대한 정보가 있고 다른 하나는 히트에 대한 카운터 (hits_total)입니다. 내가 직접 hits.hits_total
으로 전화 할 수 없기 때문입니다 (SITE_ID로 인해?). select_related
을 시도했지만 작동하지 않는 것 같습니다.
질문 :자동으로 열을 추가 할 수 있습니까? 예 : (SELECT hits.hits_total, model.* FROM [...])
을 쿼리 세트에 추가 할 수 있습니까? - 내 모델에 select_related
기능을 사용 하시겠습니까?
이 모델이 다른 기존 모델에 모두 연결될 수 있기를 바랍니다.