Skip to main content

Django’s automatic admin list screens are awesome! But sometimes you need custom columns to display information that requires some big queries or perhaps some heavy computation. This can slow down displaying the entire list screen. This app is meant to address that need by converting a custom column in to one that can be dynamically loaded over AJAX on user action.

Regular custom column

Django allows you to use admin methods to render a column on the change list screen. For example:

class MyAdmin(admin.ModelAdmin):
    list_display = ('name', 'age', 'custom_column')

    def custom_column(self, obj):
        return foo_takes_time(obj)

    custom_column.short_description = 'Custom Title'

Lazy custom column

Lazy custom columns are loaded over AJAX by user action. This is achieved by adding a decorator over any custom list column function you’ve added in your ModelAdmin class.

from lazy_admin import lazy_admin_column

class MyAdmin(admin.ModelAdmin):
    change_list_template = 'lazy_admin/change_list.html'

    list_display = ('name', 'age', 'custom_column')

    @lazy_admin_column
    def custom_column(self, obj):
        return foo_takes_time(obj)

    custom_column.short_description = 'Custom Title'

Note the change_list_template of the MyAdmin class. This template loads the javascript necessary to handle the AJAX interaction.

Install

Ideally, install the package in your virtual environment.

pip install django_lazy_admin

Now, add the app to your django setting INSTALLED_APPS.

INSTALLED_APPS = (
    '...',
    'lazy_admin'
)

And, install the URL handler in your root url conf or in some other url configuration file.

urlpatterns = patterns('',
    '...',
    url(r'^admin/lazy/', include('lazy_admin.urls')),
)

And, you’re done!

Configuration

You can turn off all lazy columns by the following in your main django settings.py file.

LAZY_ADMIN_ALLOW = False

The column content is rendered using the lazy_admin/lazy_column.html template. You can over-ride this in your own app. Or you can use a parameter to the decorator.

@lazy_admin_column(template='my_custom_template.html')

TODO

  • Support Model class methods used as custom columns as well with the same decorator.

Authors

The primary author of this package is Gautam Kachru gautam@live.in

License

BSD 3-clause. See LICENSE file.

Release files for django_lazy_admin 1.0.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_lazy_admin 1.0.1
File Size Uploaded
django_lazy_admin-1.0.1.tar.gz 5.6 kB Details

Release files / django_lazy_admin-1.0.1.tar.gz

Download URL django_lazy_admin-1.0.1.tar.gz
Size 5.6 kB
Tags Source
SHA-256 checksum
How to use checksums
6b3557969051a07e0d4936112158dbf370cbd15e42238f12923ee3abbc096030
BLAKE2b-256 checksum
How to use checksums
34e23fe7c48e2cb272f02e5f8b215503e3b6c1e29cf775baa84c3162fcf16118
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

1.0.1 This release

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