The filter is specific to datetime objects and no allowance has been made to convert strings or epoch times. Also no type checking is performed so misuse will result in an error.
To use include the above snippet in a file called templatetags/customfilters.py or append to existing filters file then load:
{% load customfilters %}
in your template, then to use it:
{{ dateobject|adjust:"months=1"|date:"Y/m/d" }}
To push the dateobject forward by a month, or:
{{ dateobject|adjust:"weeks=-1"|date:"Y/m/d" }}
To push the dateobject back a week, or:
{{ dateobject|adjust:"years=1, months=2"|date:"Y/m/d" }}
To push the dateobject forward by a year and 2 months
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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)
|
More like this
- csrf test by zukosdead 3 weeks, 2 days ago
- find even number by Rajeev529 9 months ago
- Form field with fixed value by roam 9 months, 3 weeks ago
- New Snippet! by Antoliny0919 10 months ago
- Add Toggle Switch Widget to Django Forms by OgliariNatan 1 year ago
Comments
Please login first before commenting.