Skip to main content

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.

Metadata

Release files for django-yearmonth-widget 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-yearmonth-widget 0.2.1
File Size Uploaded
django-yearmonth-widget-0.2.1.tar.gz 8.2 kB Details

Release files / django-yearmonth-widget-0.2.1.tar.gz

Download URL django-yearmonth-widget-0.2.1.tar.gz
Size 8.2 kB
Tags Source
SHA-256 checksum
How to use checksums
9c9cd940386c426d33cdd14ba62a8f6639c1cc23452e62a3703c38bb6d7b8b8e
BLAKE2b-256 checksum
How to use checksums
3a4b2d78f16539112c0fd4cb035d5dcd92a5ba55871e4f6e5f2fbf1187288a83
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.2

Release history Release notifications | RSS feed

This release

0.2.1 This release

1 release file

0.2.0

1 release file

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page