Thanks for the feedback. I've done a little bit of research about how to access business login from within templates and I thought I'd provide an update in case others find this question in the search results:
There are two cases in which the parameters for the method need to be passed:
Case #1) Passing paramaters for a single value
If we only have a single account, we can simply pass them to the model through a single call in the controller, and pass the result to the template as a single context variable.
Model
class AccountExtra(models.Model):
..
def my_pending_payment_schedules(self, status=1, country=None, institution=None)
if self.is_staff:
schedules = payment_schedule.objects.filter(active=True)
if country:
schedules = schedules.filter(product__country=country)
if institution:
schedules = schedules.filter(product__institution=institution)
return schedules
Controller
my_account = get_object_or_404(AccountExtra, id=request.user.id)
form = staff_approval_form(request.POST)
if form.is_valid():
cd = form.cleaned_data
pending_schedules = my_account.my_pending_payment_schedules(
country=cd.get('country', None),
institution=cd.get('institution', None)
)
c = RequestContext( request, {
'form': form,
'pending_schedules': pending_schedules,
})
return render_to_response(
'my/approvals/approvals_index.html',
context_instance=RequestContext(request, c)
)
Template
{% for sample in pending_schedules %}
Case #2: Passing parameters for multiple values
If however, we are trying to iterate through multiple users's pending schedules who each require different parameters, we can't use a simple 'pending_schedules' variable.
We have to either turn that variable into a dictionary to store the results of multiple users.
A collegue of mine developed a template tag that allows you to access the dictionary by key, as you iterate through the loop.
Templatetags
@register.filter
def hash(obj, key):
"""return hash lookup of key in object
If the key can be hard-coded into the template, then the normal dot-notation
is sufficient (obj.key). But if the key is referenced by a name in the
template context then this hash filter becomes useful.
Template usage: obj|hash:key
"""
return obj[key]
Template:
for user in users:
for sample in pending_schedules|hash:user.id
Do something
endfor
endfor