from django.db.models.loading import get_model from django.db.models.query import QuerySet from django import template register = template.Library() @register.filter def call_manager(model_or_obj, method): # load up the model if we were given a string if isinstance(model_or_obj, basestring): model_or_obj = get_model(*model_or_obj.split('.')) # figure out the manager to query if isinstance(model_or_obj, QuerySet): manager = model_or_obj model_or_obj = model_or_obj.model else: manager = model_or_obj._default_manager return getattr(manager, method)()