manager: proxy all unknown methods

fix_request_path_info
Bert Constantin 2010-01-16 18:03:25 +01:00
parent 2e29b8f093
commit 2729187591
1 changed files with 8 additions and 4 deletions

View File

@ -509,13 +509,17 @@ class PolymorphicManager(models.Manager):
def get_query_set(self): def get_query_set(self):
return self.queryset_class(self.model) return self.queryset_class(self.model)
# proxy all unknown method calls to the queryset
# so that its members are directly accessible from PolymorphicModel.objects.
# The advantage is that not yet known member functions of derived querysets will be proxied as well.
# But also execute all special functions (__) as usual.
def __getattr__(self, name):
if name.startswith('__'): return super(PolymorphicManager, self).__getattr__(self, name)
return getattr(self.get_query_set(), name)
def __unicode__(self): def __unicode__(self):
return self.__class__.__name__ + ' (PolymorphicManager) using ' + self.queryset_class.__name__ return self.__class__.__name__ + ' (PolymorphicManager) using ' + self.queryset_class.__name__
# proxies to queryset
def instance_of(self, *args, **kwargs): return self.get_query_set().instance_of(*args, **kwargs)
def not_instance_of(self, *args, **kwargs): return self.get_query_set().not_instance_of(*args, **kwargs)
################################################################################### ###################################################################################
### PolymorphicQuerySet ### PolymorphicQuerySet