Changelogs >


PyUp actively tracks 429,349 Python packages for vulnerabilities to keep your Python environments secure.

Scan your dependencies


NEW FEATURE FOR EVERYONE! Read here and njoy :)

1270 Fix issue when dal js is loaded twice by FiooCode
1266 New data-token-separator attribute by fraimondo
1190 1187 Fixed django-querysetsequence support
Django 3.2 support in test code



1262 Django 4.0 support by fraimondo
1255 Django 4.0 warning removal by Mogost
1253 Case sensitive creates in Select2QuerySetView by shenek
1246 Add event to notify of the initialization completed by andreccorrea
Select2 Upgraded to 4.1.0-rc.0


1222 Select2GroupQuerySetView fix by arseniy-panfilov
1233 Safari regexp fix by vtbassmatt
1239 Django 3.2+ fix by michael-sayapin
1251 Doc fix get_result_label by arlopezg
1231 Fix ViewMixin comment by moonorange



Fix 1175: Rebuild js


A LOT of fixes, but they come at a price ...

You now MUST register your custom init functions as per


1171 data-html and object creation bugfix by syserr0r
1182 fix production with select2 upgrade by MarkRunWu
1169 implement search_fields and split_words by MuckRock
1145 fix post method parameters by erdnax123
1162 JS load order issues by danielmorell
1157 jQuery loading by danielmorell
1162 fix by danielmorell this one introduces the breaking changes
1129 fix rtfd autobuild by jpic
1158 remove calculated width by nad2000
1159 Fix UUID for GFK models by sayeghr
1138 Replace DOMNodeInserted with MutationObserver by CristopherH95
1144 doc typo fix by timgates42
Flake8, Tox, Travis CI, tests ... fix by jpic


Well, Pypi won't let me upload there, it says:

HTTPError: 400 Client Error: This filename has already been used, use a different version. See for more information. for url:

But I only see 3.6.0.dev0 and 3.6.0.dev1 and 3.7.0.dev0, I suppose I should
have done pre-releases on 3.6.dev0 and 3.7.dev0.

Anyway, it lets me upload on 3.8.0, one of the last 3.x releases !

But don't worry, 4.0 will not break anything, it will merely add a new
autocomplete script for people who want out of select2 or want something
more like what we had in DAL 1 & 2, it's here:


For those who remember, this solves *exactly* the same problems that
jquery-autocomplete-light did, except it's a lightweight StencilJS
WebComponent now.


This release actually never hit Pypi.


jquery.js was still loaded by the widget, fixed by timthelion


- jquery.js has been **removed** from, this means that you are
now responsible for ensuring that jquery is loaded in your page prior to
displaying the form (
- trailing dash was replaced by underscore in forward conf, ie.
dal-forward-conf-for-id_test becomes dal-forward-conf-for_id_test

1115: Compatibility with Django 3.0 by Alexandr Artemyev mogost
1079: Fixed access to $.fn.select2 by David dwasyl
1118: Highlight select field with error to match Django style by tchatow
1099: django-nested-admin forwarded field fix by akshenc

Also, tests now run fine on Travis thanks to jorrit-wehelp


3.4.0 Python 2 and Django < 2.0 support





- Fixed a bug in the way jquery.init.js was being used by coredumperror
- Set select2 container CSS class to :all: hbielenia
- Added missing renderer parameter to render method for django 2.1 monim67
- Fix ImportError with SELECT2_TRANSLATIONS in Django 1.x hugorodgerbrown
- Forward argument should always be a tuple jihoon796
- Fixed exception thrown from Select2QuerySEtView when paginate_by is set


- use admin statics
- 981: create option behaviour
- 995: automatically generated views for generic foreign key fields
- Getting placeholder and minimumInputLength from dal select
- 1017: Initial migrations and database
- Turkish translation
- Added support for forwarded fields to Select2GenericForeignKeyModelField




895: Self() and JavaScript() forward features


843: Forward logic refactored. Specifications for types of forwarded values.


957 remove reference to deleted script (rebase issue introduced in


Revert 5b37f8661, fixes tests.


This version supports Django 2.0 and Python 3.6, perhaps more but I have not
tested, please submit compatibility patches for older versions if needed.
Please test them with tox -e base-py36-django20-sqlite before pushing.

To install 3.3.0-rc1, use `pip install django-autocomplete-light==3.3.0-rc1`.

New features:

953: Select2 update to by jpic
917: django-nested-admin support by loicteixeira
815: Simplify customization of autocomplete views by EvaSDK
746: Select2 Language and dynamic Media by luzfcb
883: Allow overwriting the results by eayin2

Bug fixes:

874: Fix Django 1.11.3 error by ikcam
933: Python 3.6 and Django 2.0 support by jpic
930: QuerySetSequence querysets order is not preserved by melvyn-sopacua
909: Prevent initilization of other selects by loicteixeira
904: Fix KeyError when id is not in attrs by dwheaton
885: Prevent rendering of empty option on multi select by johandc
892: Enable different item label for selected item by maximpetrov
926: Atomic create_object by jpic
718: Remove temp hack for select2 by FuzzAU
860: dal: widgets: use the name if we don't have the id by xrmx
849: Don't create a new option if an iexact-matching one already exists by liwenyip

Also thanks to the many documentation contributors.

874: Fix Django 1.11.3 error by ikcam
937: Update tutorial.rst to fix XSS in the example by hangtwenty
919: Better create new object example by davideghz
928: Add note about slim jqueries by melvyn-sopacua

Test notes:

I have not tested this release with other Python and Django versions,
and also tests don't pass on travis despite the effort. It's working
on all browsers here and i've chased many seleniumish race conditions
but it's not enough for travis.
So, there's no docker image available with python and selenium that
looks good i'm probably going to make one at some point but it's not
today's priority as far as I'm concerned.
So, tests are run locally which means manual action, but i've left the QA
checks on travis as mandatory because i've fixed so many PEP8 mistakes
during this release ...

Congratulations for this release my friends, because a lot of great work has
been contributed by the community since last release 4 months ago.


877: Return proper content type for json by mpasternak
819: Fixed JS autocomplete initializer by apinsard
871: Add many translations by dima-kov
879: Add classifiers in by ad-m
868: Fix selector used to allow clearing non-required fields.
861: prefer pristine jQuery to the django one by xrmx


HEAD is now at a44a2ed Fixed JS autocomplete initializer (819) (820) by


823: Optgroup list support with Select2GroupListView by jsurloppe
841: Allow boolean "data-html" attribute for widget on python side by gagarski
839: Support for forwarding radio buttons properly by gagarski
839: Add checkbox handling in forwards by marekjedrzejewski
833: Add functional tests for rename_forward app by gagarski


Remove forward.js from Select2WidgetMixin.Media by gagarski
838: Use namespaced jQuery in `get_forwards` by ryan-copperleaf
836: Queryset sequence view to display actual model name by jsoa
3.2.5 and 3.2.6 were removed from PyPi but are the same.


813: Return 400 on invalid input by EvaSDK


799: Support serializing UUIDs and add tests for models with UUIDs as PKs
by blag
826: Prevent rendering of empty option on multi select
by beruic



737: TaggitSelect2: insure there's a comma when there's only one tag, or
tag "Multi word" would end up as "Multi" and "word" by
743: Fix placeholder not working when URL is not given to autocomplete
widget (743) by thauk-copperleaf
756: Forward Capabilities Outside Admin by gagarski


745: Add list autocomplete by dmosberger, jpic and thecardcheat
754: dal_queryset_sequence documentation update by chubz
734: Move create_option functionality into it's own method andybak
741: Fix initial value not set when selected choices aren't strings
733: Advanced forward features gagarski
752: Add doc test to CI by jpic
730: Resolve SystemCheckError fields.E304 thecardcheat
721: Note about placement of DAL before grappelli by chubz
748: Update docs example about loading jquery outside the admin jpic

Mid version number bumped as a tribute to the new major features that were
added, however, there is no know backward compatibility break from 3.1 to



714: Update select2 by meesterguyman
705: Improve compat with dj1.9 by 9nix00
706: Fix extra require by blueyed
710: Added note for static files not checked by geekashu
708: Provide path with dal_select2.E001 by blueyed
700: Enable HTML markup in select2 item labels by njoyard


671: Create_field support with querysetsequence
679: Allow create message translation by maisim
682: Extend 'forward' attribute to creating objects as well by toudi
666: Improved missing 'created_field' error by guettli
670: Javascript loading documentation
678: Added example to update autocompletes in JS


661: Field forwarding: support form prefix, and formsets at the same time.
628: Improve option rename hook used until the patch is merged upstream in
656: Use http.JsonResponse() to return json by guettli
638: System check for dal_select2 to raise an error if select2 is not
662: Examples for setting placeholder and minimum input length options in
619: From django-sbo-selenium to pytest+splinter.




- 634: Select2 Upgrade
- 628: Do not rely on ids to fix container text
- 631: Initializing GFKs with values from forms
- 623: Fix extras by ticosax
- 610: Cancel out Django's style on lists



- ! BC BREAK ! CreateModelField is gone, it didn't work when another field
of the form didn't validate. There isn't a really sane way to create the
option in the form field field. Instead, this is done in the view, like
in DAL v2.
- ! BC BREAK ! dal_tagulous was removed in favor of django-tagging, because
tagulous already provides its implementation of a select2 widget.
- 610 Fixed a rendering issue with multiple selects. Upstream patch
proposed but not merged yet: select2/select24226

For details about the current status and plan, please consult the




3.0.1 573 Updated MANIFEST to include static files.

3.0.0 Rewrite: easier to use, test, maintain and support.


registration to the view like in django-select2 using queryset.query caching
which would resolve that use-case.

It's a pretty big release and I waited a while because I wanted all
contributors to benefit from it and work on the same codebase instead of
privileging one to another, not sure if it was the best way, let me know !


- 563 Don't disable multiplechoicewidgets if select is [multiple]
- Don't import anything in __init__ anymore if on django 1.9
- test_project fixes, for the above.


2.3.1 Forgot the static files in 2.3.0.


- 555 Django 1.4, 1.5 and 1.6 deprecation
- 497 Enable registration by model-name by luzfcb
- 536 551 Support proxy models by onrik
- 553 improved jQuery integration by blueyed
- 516 Corrected french transation by apinsard
- 541 Use error_messages on FieldBase to allow overrides by dsanders11
- 505 Ordering alias clash fix by sandroden
- 515 Polish translation update by mpasternak
- 543 ModelChoiceField requires the queryset argument
- 494 ModelChoiceField Watch changes to 'queryset' by jonashaag
- 514 Fixed deprecation warning on Django 1.8 by spookylukey
- 498 548 improved i18n support
- 547 prevents loading genericm2m if not in INSTALLED_APPS
- JAL18 Fix: Get value.length while value is null by hongquan
- JAL19 Clarify license by stevellis, all MIT
- JAL17 Disable the widget input when it is not in use dsanders11
- JAL15 Support openning results in new tab thebao
- JAL14 Don't autohilight first choice by default pandabuilder
- JAL13 Add option for box aligning with right edge of input dsanders11


536 At this point, proxy model support is untested, this is because I intend
to refactor the test suite and documentation during the 2.3.x serie.

494 Updating the queryset from outside the autocomplete class may lead to a
security problem, ie. if you don't replicate filters you apply manually on the
autocomplete object choices into choices_for_request() then a malicious user
could see choices which they shouldn't by querying the autocomplete directly.


Not secure
CHANGELOG, re-uploading as 2.2.10.


Not secure
478, 472: "change related button" isn't clickable when it shouldn't.


yourlabs/jquery-autocomplete-light11: jqXHR.abort considered harmful,
dsanders11 fixes BrokenPipe.
yourlabs/jquery-autocomplete-light10: consistency fix: use $ instead
of jQuery for new functions by dsanders11
yourlabs/jquery-autocomplete-light9: New parameter to disable
auto-hilighting on first choice 9 by superzazu, should fix 495 too.
477: Widget's render should use attrs even when created wthing __init__ by


Not secure
jquery-autocomplete-light/8: Positionning bug fix by marianobianchi,
jquery-autocomplete-light/6: Bugfix: Firefox won't hide input after
when option was selected by marianobianchi,
483: German translation by Mounir Messelmeni
476, 474, 482, documentation improvements by Mounir, Visgean Skeloru and
Florentin Hennecker.


Not secure
452 Fix the case where there is a cap in the pg table or column name
454: AutocompleteModel.order_by being a list would crash.


Not secure
463 Update jquery-autocomplete-light which contains IE8 fixes.
yourlabs/jquery-autocomplete-light4 by RaphaelKimmig.


Not secure
447: Ambiguous column names strikes again. This time we're using the
.column field attribute and covered a couple of cases including model
yourlabs/jquery-autocomplete-light4 fixed clearInputOnSelectChoice
behaviour by RaphaelKimmig:

- by clearing autocomplete.value as well as input.val we make sure that
subsequent clicks will not open the autocomplete filtered by a value that
is no longer visible to the user
- by clearing the input before triggering the focus we make sure the
minimumCharacters settings is honored


Not secure
422: Ambiguous column names in AutocompleteModelBase.
Also removed a generic exception expect/pass.


Not secure
Django 1.8 admin support hacks broke create_choices_on_the_fly example and
probably some other wicked JS things in user projects.

Note that we have also extracted django admin specific hooks from widget.js
into django_admin.js. So if you have custom JS loading in the admin instead
of `{% include 'autocomplete_light/static.html' %}` then you should update
it to include django_admin.js in django admin.


Not secure
- 318: Remove extra spaces rendered in choices.
- 438: Hide autocomplete on scroll in Firefox because it bugs (temp fix).
- 432: New bootstrap_modal test_app by lucky-user.
- 118: Extracted JS into a standalone jquery-plugin:


Not secure
- 408: Django admin's new edit link was implemented in such a way that
it's unable to generate itself properly server-side on initial rendering.


Not secure
- call fixPosition() on window resize if the autocomplete box is shown.


Not secure
- 431 strikes again, default to body when it can't find a relevant


Not secure
- Reduce default latency because hardware is better.
- 431: Dynamic evaluation of the autocomp box container.


Not secure
lucky-user contributed Opera/Chromium improved support.


Not secure
- 429: handle required=True in form fields again, regression introduced
in rc1's python BC break.
- 426: handle z-index since we're absolutely-positioning in 2.2.x

Thanks a lot to the rc tester community


Not secure
- 425: fixed blunt JS errors.
- Do not add pip debug log (~/.cache/pip/log/debug.log) to Travis cache.
- Just install 'pip>7', potentially using an updated version on Travis.
- Use travis_retry with "pip install", and also for `npm install`.


Not secure

The good old ``import autocomplete_light`` API support will be dropped with
Django 1.9. All imports have moved to ``autocomplete_light.shortcuts`` and
importing ``autocomplete_light`` will work until the project is used with
Django 1.9.

To be forward compatible with Django master (>=1.9) support, replace::

import autocomplete_light


from autocomplete_light import shortcuts as al

This will also make your scripts a lot shorter.


We've moved back to pre-1.1.10 CSS positioning. This means appending the
autocomplete box to an arbitrary DOM element (body by default) and using
calculating the ``top`` and ``bottom`` attribute in javascript with
``yourlabs.Autocomplete.fixPosition()`` pretty much like Django admin's
calendar widget does. While blunt, this change should help the widget being
more compatible across Django admin themes.

While this positioning system has been used since around 2005 in Django
when Adrian Holovaty open sourced admin media in commit dd5320d, it has
never been documented that's it's a good system that works well and there's
no reason to break backward compatibility in Django admin for that
- note to Django admin template customizers.


Javascript ``yourlabs.Autocomplete`` object does not bind to the same
events as it used too. Event handling has been backported from twitter
typeahead and tested on firefox and android (411).


The form field doesn't call ``super().validate()`` anymore and now
completely relies on ``AutocompleteInterface.validate_values()``. This was
how ``django-autocomplete-light`` was initially designed for, kudos to
zhiyajun11 for pointing it out ! This optimises code which was doing
validation twice and gives the flexibility it was initially designed for
from within the Autocomplete class (410).


Model Autocompletes now generate custom SQL be able to save the order in
which users have filled an autocomplete field. This actually comes from the
last 2.x version.


Most users won't notice the break except maybe the CSS ones and of course
also for Django 1.9 users.

- 419: ANSI SQL compliance (sbaum)
- 413: Exception when using models having primary key names different from
- 412: Support models with a pk different than "id" and non-numeric.
- 411: Android compatibility (js bind changes).
- 410: Removed double validation by not calling suport of ``Field.validate()``.
- 408: Support Django 1.8 change-link.
- 409: Compatibility with non-autocomplete inputs present in the widget


Pip wheel has been temporarely disabled because django-autoslug broke it,
any help here is welcome, I did my best in the various fix/*wheel*
branches but Travis won xD
There's a mission to extract the JS part and package it as a standalone
jQuery library to get more pull requests on the JS / CSS part. It sounds
like a pretty good start in the JS / UI testing and packaging world. Any
help there is welcome.
CI now has tests against MySQL and PostgreSQL since we're generating custom

Again welcome to new contributors mhuailin and SebCorbin and thanks all
for reporting issues on GitHub with all needed details and forks which make
it easy to reproduce.

And thanks to blueyed who helped sinking this year's backlog like crazy.


Not secure
uploading a new version rather than removing it as it might have already
been deployed somewhere.

2.1.0 Final release.


Not secure
- 331: Fixed reverse order of items in deck, by smcoll.


Not secure
- PEP396: autocomplete_light.__version__.
- 401: Easy to subclass FieldBase for custom ModelChoiceField (smcoll),
- 397: Support defining Meta in a ModelForm's parent.
- 394: Add comment about keyCode issue with Webkit; check for charCode==0


Not secure


Not secure

There was a bug which caused registering an autocomplete with a model
attribute to be renamed by the registry to prefix the autocomplete name
with the model name. This should not be the case anymore, but some
autocomplete names might have changed in your project if you've been
working around that bug by using the buggy name rather than forcing name=
uppon registration. Example:

class Foo(YourBaseAutocomplete):
model = Bar

The above example Would cause 'FooBar' to be registered, but now it's just
'Foo' as expected. So if you're using 'FooBar' instead of 'Foo' anywhere it
should break. See 323 / 255263e61 for gory details.


Because Django 1.9 is so sharp on import, ``import autocomplete_light``
should become ``import autocomplete_light.shortcuts as autocomplete_light``
in your projects. Backward compatibility will be maintained, but you don't
get all the shortcuts from ``import autocomplete_light`` anymore starting
Django 1.9.

- Django 1.8, 1.9 support: fixed warnings, use pytest-django
- 383: Support ModelForms without Meta.model
- 313: Model not acquired from AutocompleteModelBase
- 323: Only derivate the autocomplete name if both model and autocomplete
are passed
- 378: Be friendly with special html chars in values (David Aurelio)
- 381: The "open parentheses" (shift+9) cannot be typed on autocomplete
- 380: PyPy support: PyPy2 tests passes without genericm2m and without
taggit. PyPy3 tests won't run because lxml won't install. (Piet Delport)
- 374: Update clear-fix with latest version,
- Also Daniel Hahler made an outstanding job in the test area, builds are a
lot faster, using tox, pytest-django.
- Daniel Hahler is the second owner of YourLabs org, way to go !

So we got 7 bugs fixed, PyPy support, Django 1.8 and Django 1.9 support (we
support 1.4 to 1.9 now).

Thanks a lot to Daniel Hahler for having couch-hosted me the last 7 days in
Berlin, we've been hacking like crazy, it was really awesome, I went there
for some hacking and now I know I have a friend for life.

See you for the next django-autocomplete-light sprint ;) Who's hosting BTW


Not secure
- 257: Got rid of RemovedInDjango18Warning deprecation warnings.
- 371: Skip unuseable virtualfields, like VoteManager for django-vote.
- 372: New PEP8 E731 support.


Not secure
- Removed unused module (autocomplete_light.generic),
- choices_for_request: assert that search_fields is not a string
- 354: Choices=[] should not crash.
- also: cleaned 2.x, code coverage increase
- also: stable/2.x.x deprecated in favor of master
- also: tests against django (1.8) master enabled but allowed to fail
- also: promoted blueyed to core-dev, rock'on B)



Not secure


Not secure


Not secure


Not secure
- 334: Fixed display of autocomplete with clearfix (by madEng84)
- 336: Added compiled po files
- 335: Removed debug statement


Not secure
2.0.0a18: 292: Enable clear-ing nullable GFKs with the form.

2.0.0a17: 280: Do not depend on django on install.


There are minor backward compatibility breaks due to the
reorganization of form classes. The best way to upgrade is to
inherit from autocomplete_light.ModelForm.

- autocomplete_light.FixedModelForm was renamed to
autocomplete_light.SelectMultipleHelpTextRemovalMixin and is now
a mixin for ModelForm. Inherit from both that and
django.forms.ModelForm to get the same.
- GenericModelForm was renamed to
GenericM2MRelatedObjectDescriptorHandlingMixin and is now a mixin
for ModelForm. Inherit from both that and django.forms.ModelForm
to get the same.
- get_widgets_dict is gone, because we now favor using form fields
which do validation where it's due: on POST.
- using widgets should still work, but using the new form fields is
better because it enables DRY validation: you don't have to
hardcode the queryset on the form field definition anymore.

To fix those, just inherit from autocomplete_light.ModelForm if
possible, else check the form API details in the source or
generated API documentation:


New features:

- Added form fields, which are now in charge of validation,
- Added ModelForm which includes all features previously provided as
separated tools (generic m2m support, django issue 9321, etc, etc ...)
and overrides django's form field generator to automatically use
autocomplete fields when possible, even for generic relations.
- Python3 support.
- Tests rely on apps provided in the autocomplete_light.tests.apps
submodule instead of those provided by test_project. This make tests
potentially runnable on a user project (except that the user project
still needs to add those apps in INSTALLED_APPS).

1.4.9: Fix 193: IE8 support hacks.

1.4.8: Fix 195: RegistryView got broken on recent Django versions.


Not secure
- 252: Not all INSTALLED_APPS are modules (Django 1.7),
- 270: SelectMultipleHelpTextRemovalMixin multiple language support,
- 267: Delegate add-another url generation to Autocomplete class,
- 269: make build_widget_attrs thread-safe,
- 250: Fix ChoiceField.get_choices(),
- 192: Auto-load local jquery if not loaded already,
- Django 1.7b2 support.


Not secure
- Honor Meta.widgets,
- Added .modern-style class for autocomplete widget,


Not secure
2.0.0a13: Fix 244: Added ajax loading in input.autocomplete.


Not secure
with django.


Not secure
- 241 IE11 compatibility fix on text autocomplete contributed by Jonathan
Wiklund (MaZZly)


- Implemented autocomplete_names support to override the default
Autocomplete class used for a given model form field,
- Make the first Autocomplete class the default autocomplete (for generic
and model).
- Implemented lazy autocompletes: you can refer to an autocomplete class
before it is discovered.
- Import TaggitField and TaggitWidget in autocomplete_light.


Not secure
- Fix 219: autocompletes now convert None value to an empty list, as
Autocomplete promises that values is a list. (Fixed gfk in inlines)
- Fix 226: improved css/js positioning.
- Fix 231: widget.js was re-initializing widgets.
- Fixed taggit support
- Fix: label was not set for gmtm and gfk in inlines.


Not secure
- Updated pt_BR translation contributed by Fábio C. Barrionuevo da Luz (luzfcb).


- Removed a layer of complexity by trading autocomplete_js_attributes and
widget_js_attributes for attrs (for input/autocomplete object) and widget_attrs
(for widget container/widget js object).
- Fixed naming conventions issues:
- 124: css class .choiceDetail should be .choice-detail, same for
- 97: rename .div css class to .block,
- Fixed 84: data-autocomplete-placeholder is gone in favor of the
placeholder attribute.
- Fixed 82: data-* is not parsed anymore by yourlabs.Widget, data-widget-*
is parsed for options instead.
- Fixed 81: js Autocomplete object now parses data-autocomplete-* for
- Fixed 80: js maxValues is now maximumValues.
- Fixed 27: refactored selenium tests to be able to test any example app.
- Bugfix: get_autocomplete_from_arg returned wrong autocomplete in two cases


Not secure
- Simplified widget template selection.


Not secure
- Support for Django 1.6's ModelForm.Meta.fields = '__all__', generic fk
and generic m2m autocomplete fields were not created.


Not secure
- Fix 204: Restore AutocompleteModelBase as default,
- Fix 205: Support Python3 in views,
- Fixed 404 response in AutocompleteView.


Not secure
- Do not interfere with non-autocomplete-enabled form fields,
- Ported taggit support to Python3,
- Renamed TaggitTagField to TaggitField and integrated TaggitField into


Not secure
- Make AutocompleteModelTemplate the default autocomplete base for models.
- Added ChoiceField and MultipleChoiceField.
- Renamed .div class to .block, backward compatibility is preserved.
- BC Break: Restyled autocomplete widget to look more modern. If you want
the old style back, include autocomplete_light/old_style.css.


Not secure
- Fix 168: ensure that autocompletion inputs behaves like django
when it comes to values that were removed from the queryset.


Not secure
- Fix 190: Remove Django 1.6 Depreciation Warning,
- Fix 189: Fixed support for USE_THOUSAND_SEPARATOR.


Not secure
- Fix 188: Added debouncing in autocomplete.js,
- Fix 173: load static from staticfiles.


Not secure
- Fix 180: Support HTTPS in remote.js,
- Fix 184: Mouse support upgrade in focus management,
- Fix 182: Removed hard-coded class="" attribute.


Not secure


Not secure
- Fix Added option clearInputOnSelectChoice, patch by vosi
- Fix uninitialized js key, patch by vosi
- Escape choices before putting them in html, patch by voidus
- Added Simon Kohlmeyer to AUTHORS (Volodymyr was there already).

1.4.2 Fix 164: Support iterables in AutocompleteModel.order_by.


Not secure
- Fix 163: Use ._default_manager instead of .objects. Thanks kakulukia


Not secure
- BC Break: Default split_words to False again, to **not** match behaviour
from django.contrib.admin which is definitively too naive. (Thanks
kezabelle for helping in this decision). This means that the default
behaviour is like pre-1.3.0 again.
- Enable split_words='or' to use "OR" conditions on splitted words.
- Set order_by=None by default in AutocompleteModel.
- Added missing docstrings.
- Made it easier to spot failing tests.
- Covered all combinations with tests.


Not secure
- Support django 1.5 RelatedFieldWidgetWrapper in
- Support django-responsive-admin theme (and probably many
other customisations) by adding a div with clear:both after
the widget.


- BC Break: Default split_words to True, to match behaviour from
- Added split_words and improved search_fields support for
- Fix 161: Avoid focusing on next field on widget initialization.

1.2.6 Fixed wrong docstring.


Not secure

1.2.4 g1itch: Support hyphens in generic autocomplete object pks.


Not secure


Not secure


Not secure


Not secure
- Fix 132: removed dead line of code, and restored compatibility with
autocomplete-light <1.1.29,
- Implement 136: AutocompleteModel.split_words
- Auto-hilight the first choice.
- Fix 135: AutocompleteModel is not compatible with Django 1.3

1.1.31 Fix 129: Firefox support in JS positioning code.

1.1.30 Polish translation contributed by Michał Pasternak.

1.1.29 Fix 126: support .clone(true) with values.

WARNING: This version broke cloning widgets in some cases. This was reported in
132 and fixed in 1.2.0.


Not secure

This fixes the default model template, see in test_project:


The test_project now includes demos created by Michał Pasternak. Thankssss !

1.1.27 Fix 117: django-grappelli support.

Contributed by Michał Pasternak.


Not secure
- Fixed 114: Use widget_template attr only when set.
- Fixed 111: Support jQuery's clone(true).

1.1.25 Fixed 108: generic inline support.


Not secure
- Allow to override the default AutocompleteModelBase class used by register()
- Implemented django-hvad support


Not secure
1.1.22: Fixed DeprecationWarning for Django 1.5.


of minimumCharacters length.


Not secure


Not secure


Not secure


Not secure


Not secure


Not secure


Not secure


Not secure
- Enhancement 78: search_fields more like admin,
- Bugfix: closed brackets in style.css (thanks papalagichen)

1.1.12 Enabled CSRF.

1.1.11 Fixed dynamic initialisation (ie. inlines).

Bug was caused by a wrong attempt at migrating from jq17 live() to jq19 on().


Not secure
- Partial autocomplete.js rewrite using ideas from bootstrap-typeahead.js,
- Use of $.proxy() which allowed to get rid of many scope hacks like: var
autocomplete = this;
- When the maximum number of choices has been selected and the input goes,
automatically focus on next visible field,
- Do not show autocomplete if input has below minCharacters,
- CSS rewrite/debloat (~-50% SLOCs),
- Backported typeahead CSS,
- Backported typeahead autocomplete box placement strategy, hoping to fix IE10
mobile support,
- jQuery 1.9 support (thanks Nicolas Seinlet for the heads up).


Not secure
- Use explicit check for None value instead of trueness, allowing pk=0 (thanks
- Widget requires proper url setup (thanks emesik).
- Rewrote keypress handler using recent contributions.

Also credits to ekohl and emesik for working on keypress handling (added to


- Alias autocomplete_light.FixedModelForm to autocomplete_light.ModelForm.

1.1.7 Reset default hideAfter to 500, or click support is half broken.


Not secure
- Fix 77: autocomplete.js "was not as good as bootstrap typeahea",
- Fix 72: use prototypes in JS to make code faster

Credit to Gennady (geaden) for having the guts to criticize autocomplete.js.


Not secure
- Added blocks in autocomplete_light/widget.html which makes it easier to
extend - without boilerplate.
- Refactor CreateView to make it easier to extend.
- Added widget.extra_context to make it easier to add context to the widget

1.1.4 Enter submits the form is there is no selected choice.

Added to AUTHORS: Ewoud Kohl van Wijngaarden


Not secure


Not secure
- Fix 68: bug when using TextInput with a custom class,
- Fix 30: exclude already selected items from model autocomplete,
- Fix 60: got rid of updateWidgets(),
- Fix 63: default template for AutocompleteModelTemplate,


Not secure
- Added option to disable watch of autocompletes hidden selects,
- Performance improvement on inlines,
- Provide: autocomplete_light.FixedModelForm,
- Allow override of form kwarg in modelform_factory,
- taggit support: warn that commit=False is not supported by TagField,
- Optimize updateWidgets with the help of DOMNodeInserted,
- Avoid ImproperlyConfigured when using CreateView directly for popups only,
- Mentioned python 2.6 support,
- Django 1.5 support in test project

1.1.0 BC break in templates.

- Fix 51, replaced <div> tags by <span class="div">, this
enables rendering the widget in inline tags such as with {{
form.as_p }}, and also makes it valid HTML.
- Fix 58, remove restrictions in choices_for_values.
- Added to AUTHORS: Marc Hörsken.


Not secure
1.0.25 Added support for django-taggit in django.contrib.taggit_fields.

1.0.24 Added pt_BR translation, thanks Fábio C. Barrionuevo da Luz.

1.0.23 Added FixedModelForm, workaround django issue 9321.


Not secure
1.0.21 Added addanother.js, allowing to 'add another' even outside the admin.

1.0.20 Added AutocompleteBase.empty_html_format and spanish translation.

1.0.19 Locale/UX improvements suggested by vibragiel.


Not secure


Not secure

1.0.16 Added CharField autocompletion for comma separated values.


Not secure
- Fix 31: Workaround firefox form tempering attitude on reload
- Fix 33: Rename LICENSE.txt to LICENSE
- Fix 34: STATIC_PREFIX changed to {% static %} in templates
- Fix 34: Added readme in russian
- Fix 36: Removed old javascript-placeholder code from widget.js
- Fix 38: Invalid CSS background property
- Added to AUTHORS: balmaster, vosi, Brant Young (I hope i didn't
forget anyone, if so please let me know)

Note that except for 31, fixes were provided by the community, thanks a
lot !


Not secure
creation, ie. inlines.

It is backward compatible, but you should migrate your custom javascript

0) Use $(document).bind('yourlabsWidgetReady', ...) instead of
$(document).ready(...) to initialize autocomplete widgets
1) Use
$('.autocomplete-light-widget[data-bootstrap=...]').live('initialize', ...)
to instanciate autocomplete widgets instead of

See docs or remote.js for an example.

1.0.13 Use HTML5 placeholder, javascript API support for cloned widgets.


Not secure
div id and removed debug statement.


Not secure
relies on get_or_create_by in that case


Not secure
spec, the spec was removed from tests and this case is fixed.


Not secure


Not secure
1.0.7 Tested support for autocompletes that depend on each other.


Not secure
containers created by widget.js


Not secure
to find a local object


Not secure
use the custom name


Not secure


Not secure


Not secure


Not secure
- "Channel" is gone in favor of "Autocomplete"
- More unit tests and new selenium tests
- Javascript rewrite, for consistency and documentation
- New view on /autocomplete_light/ allows admins to view the registry


Not secure
Backward compatibility break: {% autocomplete_light_static %} was removed.
Instead, use {% include 'autocomplete_light/static.html' %} as demonstrated
in the "Quick start" documentation.

Note that autocomplete_light/static.html does not include
cities_light/autocomplete.js, so you have to load it yourself now.


Not secure
No backward compatibility break.

- Bugfix in generic channel example: demonstrate how to query_filter on
multiple queryset types.
- Bugfix in GenericForeignKeyField: allow none value.
- Enhancement: autocomplete_light.contrib.generic_m2m supports generic many
to many relations.
- Enhancement: allow registration of model with custom channel attributes,
this allows to register a model with another "search_name" than "name"
without subclassing.
- Documentation improvements.