from dateutil.relativedelta import relativedelta from django import template register = template.Library() @register.filter def adjust(value, arg): """Adjusts the datetime object by the argument and returns the new datetime for formatting @note: Uses relativedelta to adjust the date object Usage: {{ dateobject|adjust:"weeks=1" }}, or {{ dateobject|adjust:"weeks=1, days=2"|date:"Y m d" }} """ args = dict(tuple(e.split('=')) for e in arg.split(', ')) for k, v in args.iteritems(): args[k] = int(v) # Convert all values to integers return value + relativedelta(**args)