Skip to main content

Django’s class-based generic views are great, they let you accomplish a large number of web application design patterns in relatively few lines of code. They do have their limits though, and that’s what this library of views aims to overcome.

https://api.travis-ci.org/AndrewIngram/django-extra-views.png?branch=master https://pypip.in/d/django-extra-views/badge.png

Installation

Installing from github.

pip install -e git://github.com/tomchristie/django-extra-views.git#egg=django-extra-views

Features so far

  • FormSet and ModelFormSet views - The formset equivalents of FormView and ModelFormView.

  • InlineFormSetView - Lets you edit formsets related to a model (uses inlineformset_factory)

  • GenericInlineFormSetView, the equivalent of InlineFormSetView but for GenericForeignKeys

  • CreateWithInlinesView and UpdateWithInlinesView - Lets you edit a model and its relations

  • Support for generic inlines in CreateWithInlinesView and UpdateWithInlinesView

Notes

  • NamedFormsetMixin removed - context behavior baked directly into views, with inline_context_names and formset_context_name.

  • Removed MultiFormView, SearchableMixin, SortableListMixin, CalendarMonthView.

  • The InlineFormSet and GenericFormSet classes are now just regular classes, not views.

Still to do

Adding support for pagination in ModelFormSetView and its derivatives should now be simpler.

Examples

Defining a FormSetView.

from extra_views import FormSetView


class AddressFormSet(FormSetView):
    form_class = AddressForm
    template_name = 'address_formset.html'

Defining a ModelFormSetView.

from extra_views import ModelFormSetView


class ItemFormSetView(ModelFormSetView):
    model = Item
    template_name = 'item_formset.html'

Defining a CreateWithInlinesView and an UpdateWithInlinesView.

from extra_views import CreateWithInlinesView, UpdateWithInlinesView, InlineFormSet
from extra_views.generic import GenericInlineFormSet


class ItemInline(InlineFormSet):
    model = Item


class TagInline(GenericInlineFormSet):
    model = Tag


class CreateOrderView(CreateWithInlinesView):
    model = Order
    inlines = [ItemInline, TagInline]


class UpdateOrderView(UpdateWithInlinesView):
    model = Order
    inlines = [ItemInline, TagInline]


# Example URLs.
urlpatterns = patterns('',
    url(r'^orders/new/$', CreateOrderView.as_view()),
    url(r'^orders/(?P<pk>\d+)/$', UpdateOrderView.as_view()),
)

Download files

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

Source Distribution

django-ptree-extra-views-0.6.3.zip (22.1 kB view details)

Uploaded Source

File details

Details for the file django-ptree-extra-views-0.6.3.zip.

File metadata

File hashes

Hashes for django-ptree-extra-views-0.6.3.zip
Algorithm Hash digest
SHA256 b470ae6dce437078e016b916f191b5ef4067180850e6ebfac2019038d235e3cb
MD5 ad3b8aba3730a8682d02d65a7f296248
BLAKE2b-256 038f20fd259182ff342590536f0a4248897ed2ab72f291ea4224439be1f87b46

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.6.3 This release

1 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