Skip to main content

We only care about year and month for DateField, and always set the day to 1, it's a Django Widget allow you select the year and month. And now we support CharField backend.

Project description

django-yearmonth-widget

We only care about year and month for DateField, and always set the day to 1, it's a Django Widget allow you select the year and month. And now we support CharField backend.

Install

pip install django-yearmonth-widget

Usage

pro/settings.py

INSTALLED_APPS = [
    ...
    'django_static_jquery3',
    'django_yearmonth_widget',
    ...
]

app/admin.py

from django.contrib import admin
from django import forms
from django_yearmonth_widget.widgets import DjangoYearMonthWidget
from .models import Book


class BookForm(forms.ModelForm):
    class Meta:
        model = Book
        exclude = []
        widgets = {
            "published_yearmonth": DjangoYearMonthWidget(),
        }

class BookAdmin(admin.ModelAdmin):
    form = BookForm
    list_display = ["name", "published_time"]

admin.site.register(Book, BookAdmin)

Note:

  1. Create a ModelForm, and set new widget for the field.

DjangoYearMonthWidget Init parameters

  • years: list of year numbers. Default to None.
    • If years provided, parameters prev_years and next_years are ignored.
  • start_year: Default to None. Use to set the beginning of year range, have higher priority than prev_years.
  • end_year: Default to None. Use to set the ending of year range, have higher priority than next_years.
  • prev_years: int, default to 10.
  • next_years: int, default to 0.
    • Use prev_years, next_years to set the year range based on today's year.
    • prev_years means the begining year is now.year - prev_years. If today's year is 2020 and the prev_years=10, so that the final years is start at 2010.
    • next_years means the ending year is now.year + next_years. If today's year is 2020 and the next_years=10, so that the final years is end at 2030.
  • day_value: int, default to 1.
  • value_dumps: string template, e.g. %(year)04d-%(month)02d-%(day)02d
  • value_loads: regex parse the string value, e.g. (?P<year>\d{4})-(?P<month>\d{1,2})-(?P<day>\d{1,2})
    • value_dumps and value_loads must matchs with each other, it means value_loads regex CAN parse string dumped with value_dumps.
    • value_dumps MUST in %(xx)d so that both python and javascript can do the string formatting.

Releases

v0.2.1 2020/03/27

  • Fix inline form rendering problem, because it contains a NONE value year-month for inline form row template.
  • Change event listenning method to $.to, so that the widget will work in inline form.

v0.2.0 2020/03/16

  • Add start_year & end_year parameters. The parameters start_year and end_year have higher priority than prev_years and next_years.
  • Add support for CharField. You must provide value_dumps and value_loads for CharField backend.

v0.1.0 2020/03/10

  • First release.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-yearmonth-widget-0.2.1.tar.gz (8.2 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page