opensource-nepal / django-nepali

A django package on top of 'nepali' python package which supports nepali date time, time conversion, etc on django projects.
GNU General Public License v3.0
11 stars 3 forks source link

Implement NepaliDateField for Django Models and Forms #5

Open aj3sh opened 1 year ago

aj3sh commented 1 year ago

As an extended package of 'nepali', we need to create a new field called NepaliDateField in Django that supports Nepali dates. This field will be used in both Django models and forms.

Model Usage

Initialization

class MyNepaliInfo(models.Model):
    ...
    birthday = NepaliDateField(...)
    ...

Saving data

This field will support both Python's date and nepalidate.

info = MyNepaliInfo()
info.birthday = nepalidate(2051, 4, 29)  # nepali date
...
info.save()

# OR
info.birthday = datetime.date(1994, 8, 13)  # Python's date

# OR

MyNepaliInfo.objects.create(
    ...
    birthday = nepalidate(2051, 4, 29),
    ...
)

Filtering

Filtering should be done by both Python's date and nepalidate. Also, user should be able to filter with nepali date's year, month, or day.

# filtering with nepalidate
MyNepaliInfo.objects.filter(birthday=nepalidate(2051, 2, 29))

# filtering with Python's date
MyNepaliInfo.objects.filter(birthday=date(1994, 8, 13)

# date range filtering
MyNepaliInfo.objects.filter(birthday__range=(nepalidate1, nepalidate2))
MyNepaliInfo.objects.filter(birthday__gt=nepalidate1)

# Filtering with Nepali year, same goes for the month and day
MyNepaliInfo.objects.filter(birthday__year=2051)

# Filtering with English year
MyNepaliInfo.objects.filter(birthday__year_en=1994)

Form Usage

Initialization

class MyNepaliInfoForm(forms.Form):
    ...
    birthday = NepaliDateFormField(...)
    ...

...

aj3sh commented 1 year ago

Let's start with a POC. cc: @sugat009