@register.filter()
def getattribute(model, item):
    elements = item.split('.')
    element = elements.pop(0)
    try:
        attr = getattr(model, element, None)
    except:
        return
    if attr is None:  # end of recursion
        return
    if callable(attr):
        try:
            attr = attr()
        except:  # couldn't call this method without params
            return
    if elements:
        return getattribute(attr, '.'.join(elements))
    return attr  # no elements left (end of recursion)
Test we can iterate over the rows.
dataset/ETHPy150Open magopian/django-data-exports/data_exports/templatetags/getter_tags.py/getattribute--crossover with--dataset/ETHPy150Open project-fondue/python-yql/yql/tests/test_yql_object.py/YQLObjTest.test_rows