django-recurrence
Django utility wrapping dateutil.rrule
What it is and what it does
django-recurrence is a Django model field and utility library for storing recurring date and time patterns in your database. It wraps dateutil.rrule to handle RFC 2445-based recurrence rules, letting you define patterns like "every Friday" or "first Monday of each month" without storing individual event instances. The library provides a RecurrenceField that serializes recurrence information for database storage, a Recurrence/Rule object interface, and a JavaScript widget for UI interaction.
Typically used in scheduling applications, course management systems, or any Django project where events repeat on a pattern. Instead of creating separate database records for each occurrence, you store the recurrence rule once and generate occurrences on demand. The package is actively maintained, supports modern Python and Django versions, and has no known security vulnerabilities.
Use it for:
- Store university course schedules with repeating class times without creating individual event records.
- Build appointment booking systems where recurring slots (e.g., every Tuesday 2-4pm) are defined once.
- Create calendar applications that display repeating events based on stored recurrence patterns.
- Implement subscription or billing cycles with recurring date patterns.
- Model repeating maintenance tasks or system jobs with flexible scheduling rules.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Provides a Django model field and utilities for storing and working with recurring dates and times in your database, wrapping dateutil.rrule for RFC 2445-based recurrence rules.
Yes. django-recurrence is a stable, actively maintained library with low install friction and no security issues. It solves a specific, well-defined problem (recurring dates in Django) with a clean API and broad Django/Python version support. Install it if your project needs to store or work with repeating date patterns.
Install
django-recurrence on PyPI
pip
pip install django-recurrenceuv
uv add django-recurrencepoetry
poetry add django-recurrenceInstalling django-recurrence
Before you install
Low friction install with only two runtime dependencies (django and python-dateutil). Actively maintained with a recent release and ongoing commits; supports modern Python versions (3.9+) and current Django versions (4.2, 5.2, 6.0).
License in practice
BSD license is permissive, allowing use in commercial and private projects with minimal restrictions.
Quickstart
pip install django-recurrence
import recurrence.fields
class Course(models.Model):
title = models.CharField(max_length=200)
recurrences = recurrence.fields.RecurrenceField()
Requires Django to be installed and configured in your project.
Verify before relying
- Whether the JavaScript widget is automatically included or requires separate setup.
- Performance characteristics when querying large numbers of recurring events.
- Compatibility with Django ORM querysets for filtering by recurrence patterns.
Package facts
| License | BSD (permissive) |
| Python support | supports the current Python release (>=3.9) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 2 — django, python-dateutil |
| Maintenance | actively maintained — 238 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 246,284/month — #8,713 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: django_recurrence-1.14-py3-none-any.whl
Tags
More Application Frameworks packages
FastAPI is a Python web framework for building…
permissive · top 100 on PyPI
annotated-docProvides a way to document function parameters,…
permissive · top 100 on PyPI
textualTextual is a Python framework for building…
permissive · top 100 on PyPI
typerTyper builds command-line applications from…
permissive · top 1,000 on PyPI
mcpBuild and connect to Model Context Protocol…
permissive · top 1,000 on PyPI
WerkzeugWerkzeug is a WSGI utility library providing…
permissive · top 1,000 on PyPI
recurring-ical-eventsExpands recurring iCalendar events (RFC 5545)…
copyleft · top 5,000 on PyPI
python-dateutilProvides parsing, arithmetic, and recurrence…
permissive · top 100 on PyPI
django-icalGenerates iCalendar (iCal) feeds from Django…
permissive · top 15,000 on PyPI
icalParse, create, and iterate over iCalendar (RFC…
permissive · top 15,000 on PyPI
django-sortedm2mProvides a drop-in replacement for Django's…
permissive · top 15,000 on PyPI
drf-writable-nestedExtends Django REST Framework serializers to…
permissive · top 15,000 on PyPI
metomi-isodatetimeParses and manipulates ISO 8601 date-time…
copyleft · top 15,000 on PyPI
django-cryptography-django5Encrypts and decrypts data in Django models…
permissive · top 15,000 on PyPI
django-cryptography-5Provides encrypted model fields and…
permissive · top 15,000 on PyPI
django-ordered-modelAdds ordering and reordering capabilities to…
permissive · top 15,000 on PyPI