forked from django/django
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fixed django#15760 -- Added JavaScript events for admin inline forms.
- Loading branch information
1 parent
65a1055
commit 1335aa2
Showing
7 changed files
with
114 additions
and
9 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -588,6 +588,7 @@ answer newbie questions, and generally made Django that much better: | |
Rachel Willmer <http://www.willmer.com/kb/> | ||
Radek Švarz <http://www.svarz.cz/translate/> | ||
Rajesh Dhawan <[email protected]> | ||
Ramez Ashraf <[email protected]> | ||
Ramiro Morales <[email protected]> | ||
Ram Rachum <[email protected]> | ||
Randy Barlow <[email protected]> | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
====================================== | ||
JavaScript customizations in the admin | ||
====================================== | ||
|
||
.. _admin-javascript-inline-form-events: | ||
|
||
Inline form events | ||
================== | ||
|
||
.. versionadded:: 1.9 | ||
|
||
You may want to execute some JavaScript when an inline form is added or removed | ||
in the admin change form. The ``formset:added`` and ``formset:removed`` jQuery | ||
events allow this. The event handler is passed three arguments: | ||
|
||
* ``event`` is the ``jQuery`` event. | ||
* ``$row`` is the newly added (or removed) row. | ||
* ``formsetName`` is the formset the row belongs to. | ||
|
||
The event is fired using the :ref:`django.jQuery namespace | ||
<contrib-admin-jquery>`. | ||
|
||
In your custom ``change_form.html`` template, extend the | ||
``admin_change_form_document_ready`` block and add the event listener code: | ||
|
||
.. code-block:: html+django | ||
|
||
{% extends 'admin/change_form.html' %} | ||
|
||
{% block admin_change_form_document_ready %} | ||
{{ block.super }} | ||
<script type="text/javascript"> | ||
(function($) { | ||
$(document).on('formset:added', function(event, $row, formsetName) { | ||
if (formsetName == 'author_set') { | ||
// Do something | ||
} | ||
}); | ||
|
||
$(document).on('formset:removed', function(event, $row, formsetName) { | ||
// Row removed | ||
}); | ||
})(django.jQuery); | ||
</script> | ||
{% endblock %} | ||
|
||
Two points to keep in mind: | ||
|
||
* The JavaScript code must go in a template block if you are inheriting | ||
``admin/change_form.html`` or it won't be rendered in the final HTML. | ||
* ``{{ block.super }}`` is added because Django's | ||
``admin_change_form_document_ready`` block contains JavaScript code to handle | ||
various operations in the change form and we need that to be rendered too. | ||
|
||
Sometimes you'll need to work with ``jQuery`` plugins that are not registered | ||
in the ``django.jQuery`` namespace. To do that, simply change how the code | ||
listens for events. Instead of wrapping the listener in the ``django.jQuery`` | ||
namespace, just listen to the event triggered from there. For example: | ||
|
||
.. code-block:: html+django | ||
|
||
{% extends 'admin/change_form.html' %} | ||
|
||
{% block admin_change_form_document_ready %} | ||
{{ block.super }} | ||
<script type="text/javascript"> | ||
django.jQuery(document).on('formset:added', function(event, $row, formsetName) { | ||
// Row added | ||
}); | ||
|
||
django.jQuery(document).on('formset:removed', function(event, $row, formsetName) { | ||
// Row removed | ||
}); | ||
</script> | ||
{% endblock %} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters