Skip to main content

Extensions to Django's admin site to add an ajax view.

Project description

Extensions to Django's admin site.

Currently Includes:

  • BaseCustomUrlAdmin: hook to provide additional urls to your model admin.
  • BaseAjaxModelAdmin: hook to have a form that gets some of it's form fields dynamically depending on a certain field choice.
  • BaseAjaxModelForm: form to help setup and save dynamic fields based on other fields chosen.

USAGE

Take a look at the example project for a more detailed example.

BaseCustomUrlAdmin

  • in your ModelAdmin, subclass BaseCustomUrlAdmin and implement the 'get_custom_urls' function

BaseAjaxModelAdmin

  • in your ModelAdmin, subclass BaseAjaxModelAdmin and make sure your form is pointing to your dynamic form.
  • there will be a new url that ends with /ajax/ that handles the ajax request.
  • Django's ModelAdmin will only display fields declared in a fieldset so we make sure the Ajax fields don't display when they don't have enough data to be present, and that they do display when they do. Because of this, we currently are not respecting any fieldsets you might have declared in your ModelAdmin. If you know of a good way to lift this restriction, please submit a patch.

BaseAjaxModelForm

  • set the ajax_change_field to be the name of the form field whose change triggers the ajax call OR set the ajax_change_fields to a list of field names whose change triggers the ajax call
  • in your form, set the dynamic_fields property to return a dictionary whose keys are the field names and values are the instantiated fields.
    @property
    def dynamic_fields(self):
        return {
            'my_field': CharField(initial="hello world!", label="Greeting"),
        }
    
  • when the change field is present either in a forms initial data or submitted data, the form will add all your dynamic fields to it, and when saving, the form will make sure all your dynamic field values are saved to the instance.
  • make sure the file in djadmin_ext/static/djadmin_ext/admin_ajax.js is available in your static content.
  • The ajax call gets the new form and replaces all the elements with the class of .module with the updated form.
  • NOTE: this will blow out any inline forms you have declared, so if you need inline forms, we'd be happy to accept a patch making it possible.

Testing

To test the admin, we wrote playwright tests. The tests will try to start django's test server, open a browser, execute the tests and verify the actions on the page behave as expected.

python setup.py test

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_admin_ext-3.0.2.tar.gz (12.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_admin_ext-3.0.2-py3-none-any.whl (13.2 kB view details)

Uploaded Python 3

File details

Details for the file django_admin_ext-3.0.2.tar.gz.

File metadata

  • Download URL: django_admin_ext-3.0.2.tar.gz
  • Upload date:
  • Size: 12.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for django_admin_ext-3.0.2.tar.gz
Algorithm Hash digest
SHA256 61bcc5df647fc9c7080f5045f1f9faf4f8302999eefbdc7030faed5c9c73b0aa
MD5 51151a114b51d765c18794954f614263
BLAKE2b-256 3e69df2152aff35623b67b867b73d21216210500f5324490d4c5b9a1ba0b0f52

See more details on using hashes here.

File details

Details for the file django_admin_ext-3.0.2-py3-none-any.whl.

File metadata

File hashes

Hashes for django_admin_ext-3.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 82ce862cb139e41d7327a94e1d9da0b2613bf215aaedf54dba9aa4269e2d3651
MD5 664beaa4aed962f47eb8aa5a51a56c56
BLAKE2b-256 9a2bc304e59c5a4d879aa416dac8a32a1f2d56c8a8f856de940de56e79f4407d

See more details on using hashes here.

Supported by

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