Skip to content
This repository

Jalali DateField support for Django model

branch: master

Fetching latest commit…


Cannot retrieve the latest commit at this time

Octocat-spinner-32 django_jalali
Octocat-spinner-32 .gitignore
Octocat-spinner-32 README

Django Jalali

This module gives you a DateField same as Django's DateField but you can get and query data based on Jalali Date



easy_install django_jalali


Direct Usage

  1. Run :
$ startproject jalali_test
  1. Start your app :
    $ python startapp foo
  1. Edit and add django_jalali and your foo to your INSTALLED_APPS (also config DATABASES setting)

  2. Edit foo/

from django.db import models                                                                                                                          
from django_jalali.db import models as jmodels

class Bar(models.Model):
    objects = jmodels.jManager()
    name =  models.CharField(max_length=200)
    date =  jmodels.jDateField()
    def __str__(self):
        return "%s, %s"%(,
class BarTime(models.Model):
    objects = jmodels.jManager()
    name =  models.CharField(max_length=200)
    datetime = jmodels.jDateTimeField()
    def __str__(self):
        return "%s, %s" %(, self.datetime)
  1. Run
$ python syncdb
  1. Test it
$ python shell
Python 2.6.6 (r266:84292, Sep 15 2010, 15:52:39) 
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from foo.models import Bar
>>> import jdatetime
>>> today =, 5, 12)
>>> mybar = Bar(name="foo", date=today)
>>>, 5, 12)
>>> Bar.objects.filter(date=today)
[<Bar: foo, 1390-05-12>]
>>> Bar.objects.filter(date__gte="1390-5-12")
[<Bar: foo, 1390-05-12>]
>>> Bar.objects.filter(date='1363-08-01')
>>> from foo.models import BarTime
>>> BarTime(name="Bar Time now", datetime=jdatetime.datetime(1380,8,2,12,12,12)).save()
>>> BarTime.objects.filter(datetime__lt= jdatetime.datetime(1380,8,2,12,12,12 ))
>>> BarTime.objects.filter(datetime__lte= jdatetime.datetime(1380,8,2,12,12,12 ))
[<BarTime: Bar Time now, 1380-08-0212:12:12>]
>>> BarTime.objects.filter(datetime__gt='1380-08-02')
[<BarTime: Bar Time now, 1380-08-0212:12:12>]
>>> BarTime.objects.filter(datetime__gt=d)
>>> BarTime.objects.filter(datetime__year=1380)
[<BarTime: Bar Time now, 1380-08-0212:12:12>]

Admin Interface

  1. Create foo/
from foo.models import Bar,BarTime
from django.contrib import admin
import django_jalali.admin.filterspecs #you need to import this for adding filter in admin interface
import django_jalali.admin as jadmin #you need import this for adding jalali calander widget

class BarAdmin(admin.ModelAdmin):
    list_filter = ['date'], BarAdmin)

class BarTimeAdmin(admin.ModelAdmin):
    list_filter = ['datetime'], BarTimeAdmin)
  1. Config admin interface and fire up your django and enjoy using jalali date !
Something went wrong with that request. Please try again.