NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #2868 most downloaded on PyPI
A Pylint plugin to help Pylint understand the Django web framework
Last release 2 months ago
11 Jul 2026
Release timing varies
gaps range from 2 weeks to 1.6 years
Nearly every release is documented
notes for 52 of 57 stable releases
1 version withdrawn
withdrawn after publishing
13 years old
58 releases · first in 2013
Added format-html-interpolation (W5150) and mark-safe-interpolation (W5151) checks which warn when the format string of format_html() / format_html_jo
format-html-interpolation (W5150) and mark-safe-interpolation (W5151) checks which warn when the format string of format_html() / format_html_join() or the argument of mark_safe() is built with an f-string, str.format(), %-formatting or + concatenation. Such values bypass Django's HTML escaping; pass them as arguments instead.We added support for pylint 4.0.0+.
We added support for pylint 4.0.0+.
Other
- CI now tests against Django 5.2
- CI now tests against python 3.13
- CI now tests against python 3.14
- CI now tests against pylint 4.0.0+
One column per quarter.
We dropped support for Python 3.7, 3.8, and for pylint below 3.0.
We dropped support for Python 3.7, 3.8, and for pylint below 3.0.
This version drops support for Python 3.6
This version drops support for Python 3.6
Fixed compatibility issue with datetime classes and python 3.12 (#425)
This is a small release to introduce pylint 3 functionality.
This is a small release to introduce pylint 3 functionality.
Fixed compatibility issue between pylint 2.12 and 2.13 to construct ScopeConsumer tuples correctly depending on version
Fixed crash with assigning a class to a variable, and referencing the variable when subclassing
Fixed picking for augment_visit (see #276)
Bugfix relase:
augment_visit (see #276)Fixed compatability with astroid 2.9.1 (#343) - New
Bugfixes
New
Fix compatibility issues with pylint >= 2.8. Fixes #322 _ and #323 _
Start testing with Django 3.2 on Python 3.9 (Michael K.)
Start testing with Django 3.2 on Python 3.9 (Michael K.)
Teach pylint-django about all HTTP methods from the View class, not only get and post (Nicolás Quiroz)
Typo fixes for #314 (John Sandall)
Ignore unused-argument for *args, **kwards in view method signatures
Moved Faker dependencies to test-only. Closes #304
Faker dependencies to test-only. Closes #304Relaxed Faker package versioning requirement for Faker (Robin Chow)
Faker (Robin Chow)Allowed configuration of the Django settings module to be used via a commandline argument #286 _
#286 <https://github.com/PyCQA/pylint-django/issues/286>_#277 <https://github.com/PyCQA/pylint-django/issues/277>_
and #243 <https://github.com/PyCQA/pylint-django/issues/243>_AttributeError: 'Subscript' object has no attribute 'name' error.
Closes #284 <https://github.com/PyCQA/pylint-django/issues/284>_ (@uy-rrodriguez)update_or_create calls (James Pulec)Improvement in error message for missing-backwards-migration-callable (Bryan Mutai)
missing-backwards-migration-callable
(Bryan Mutai)Rely on Django to resolve string references in ForeignKey fields. Refs #243 (Alejandro Angulo)
New checker to warn about missing backwards data migrations (Bryan Mutai)
pylint_django.checkers.db_performance to
pylint_django.checkers.migrations#268 <https://github.com/PyCQA/pylint-django/issues/268>_
(Alejandro Angulo)Do not report error for gettext_lazy (Antonin MOREL)
gettext_lazy (Antonin MOREL)Add support for Django 3.0 and Python 3.8 (Wayne Lambert)
Suppress too-many-ancestors for class-based generic views
too-many-ancestors for class-based generic viewshandler400, handler403, handler404 to good_names. Fix
#248Fix too broad suppression of unused-argument warnings for functions and methods where the first argument is named request. Now issues warnings for the
Use functools.wrap to preserve leave_module info (Mohit Solanki)
Use functools.wrap to preserve leave_module info (Mohit Solanki)
Suppress no-member for ManyToManyField. Fix #192 and #237 (Pierre Chiquet)
Fix UnboundLocalError: local variable 'key_cls' referenced before assignment for cases when models is a python package, the to argument is a string th
UnboundLocalError: local variable 'key_cls' referenced before assignment
for cases when models is a python package, the to argument is a string
that is used in this pattern app.Model and also there is some other
bool const like null=True right after to. (Sardorbek Imomaliev)Support recursive (self) ForeignKey relations. Fix #208 (Daniil Kharkov)
Fixed AstroidImportError for DecimalField. Fix #221 (Daniil Kharkov)
Updating dependency version of pylint-plugin-utils as pylint 2.3 release was not compatible #220 _
Bumping the version number because there's been a mix-up between GitHub tags and the versions pushed to PyPI for 2.0.3 and 2.0.4.
Bumping the version number because there's been a mix-up between GitHub tags and the versions pushed to PyPI for 2.0.3 and 2.0.4.
Please use 2.0.5 which includes the changes mentioned below!
Avoid traceback with concurrent execution. Fix #197
no-member errors for LazyFunction in factoriesno-member errors for RelatedManager fieldsSuppress false-positive no-self-argument in factory.post_generation. Fix #190 _ (Federico Bond)
Suppress false-positive no-self-argument in factory.post_generation. Fix #190 (Federico Bond)
Add test for Model.objects.get_or_create(). Close #156 __
Enable testing with Django 2.1
Add test for Model.objects.get_or_create(). Close #156
Add test for objects.exclude(). Close #177
Fix Instance of 'Model' has no 'id' member (no-member), fix Class 'UserCreationForm' has no 'declared_fields' member. Close #184
Fix for Instance of 'ManyToManyField' has no 'add' member. Close #163
Add test & fix for unused arguments on class based views
Requires pylint >= 2.0 which doesn't support Python 2 anymore!
Requires pylint >= 2.0 which doesn't support Python 2 anymore!
Add modelform-uses-unicode check to flag dangerous use of the exclude attribute in ModelForm.Meta (Federico Bond).
Enable test case for urlpatterns variable which was previously disabled
New JsonResponseChecker that looks for common anti-patterns with http responses returning JSON. This includes::
New JsonResponseChecker that looks for common anti-patterns with http responses returning JSON. This includes:
HttpResponse(json.dumps(data)) HttpResponse(data, content_type='application/json') JsonResponse(data, content_type=...)
Nothing published for this version
Remove the compatibility layer for older astroid versions
Remove the compatibility layer for older astroid versions
Make flake8 happy. Fix #102
Fix: compatibility with Python < 3.6 caused by ModuleNotFoundError not available on older versions of Python (Juan Rial)
Show README and CHANGELOG on PyPI. Fix #122
Fix explicit unicode check with python_2_unicode_compatible base models (Federico Bond)
Suppress not-an-iterable message for 'objects'. Fix #117
Teach pylint_django that objects.all() is subscriptable. Fix #144
Suppress invalid-name for wsgi.application. Fix #77
Add test for WSGIRequest.context. Closes #78
Register transforms for FileField. Fix #60
New checker pylint_django.checkers.db_performance. Enables checking of migrations and reports when there's an AddField operation with a default value which may slow down applying migrations on large tables. This may also lead to production tables being locked while migrations are being applied. Fix #118
Suppress no-member for factory.SubFactory objects. Useful when model factories use factory.SubFactory() for foreign key relations.
Add an optional dependency on Django
Add an optional dependency on Django
Fix the DjangoInstalledChecker so it can actually warn when Django isn't available
Fix #136 by adding automated build and sanity test scripts
Fix #133 __ and #134 __ by including package data when building wheel and tar.gz packages for PyPI (Joseph Herlant)
Fix #123 __ - Update links after the move to pylint-dev (Mr. Senko)
Fix #123 - Update links after the move to pylint-dev (Mr. Senko)
Add test for Meta class from django_tables2 (Mr. Senko)
Fix flake8 complaints (Peter Bittner)
Add missing .txt and .rc test files to MANIFEST.in (Joseph Herlant)
Nothing published for this version
WARNING: this release has not been tested via our regular CI process because the 0.8.x branch is missing lots of internal infrastructure and it will n
WARNING: this release has not been tested via our regular CI process because the 0.8.x branch is missing lots of internal infrastructure and it will not be generally supported! This version is provided as a last-resort measure for users who can't upgrade to the 2.x series! Use at your own risk!
This is the last version to support Python 2. Issues a deprecation warning!
This is the last version to support Python 2. Issues a deprecation warning!
#109, adding 'urlpatterns', 'register', 'app_name' to good names. Obsoletes #111, fixes #108 (Vinay Pai)
Add 'handler500' to good names (Mr. Senko)
#103: Support factory_boy's DjangoModelFactory Meta class (Konstantinos Koukopoulos)
#100: Fix E1101:Instance of 'proxy' has no 'format' member' when using .format() on a ugettext_lazy translation. Fixes #80 (canarduck)
#99: Add tests and transforms for DurationField, fixes #95 (James M. Allen)
#92: Add json field to WSGIRequest proxy (sjk4sc)
#84: Add support for django.contrib.postgres.fields and UUIDField (Villiers Strauss)
Stop testing with older Django versions. Currently testing with Django 1.11.x and 2.0
Stop testing on Python 2, no functional changes in the source code though
Update tests and require latest version of pylint (>=1.8), fixes #53, #97
#81 Fix 'duplicate-except' false negative for except blocks which catch the DoesNotExist exception.
- #76 __ Better handling of mongoengine querysetmanager - #73 __ #72 __ Make package zip safe to help fix some path problems - #68 __ Suppressed inval
#76 Better handling of mongoengine querysetmanager
#73 #72 Make package zip safe to help fix some path problems
#68 Suppressed invalid constant warning for "app_name" in urls.py
#67 Fix view.args and view.kwargs
#66 accessing _meta no longer causes a protected-access warning as this is a public API as of Django 1.8
#65 Add support of mongoengine module.
#59 Silence old-style-class for widget Meta
- #52 __ - Fixed stupid mistake when using versioninfo
#52 - Fixed stupid mistake when using versioninfo
- #51 __ - Fixed compatibility with pylint 1.5 / astroid 1.4.1
#51 - Fixed compatibility with pylint 1.5 / astroid 1.4.1
- #43 __ - Foreign key ID access (somefk_id) does not raise an 'attribute not found' warning - #31 __ - Support for custom model managers (thanks smir
#43 - Foreign key ID access (somefk_id) does not raise an 'attribute not found' warning
#48 - Added support for django-restframework (thanks mbertolacci)
Pylint 1.4 dropped support for Python 2.6, therefore a constraint is added that pylint-django will only work with Python2.6 if pylint<=1.3 is installe
Pylint 1.4 dropped support for Python 2.6, therefore a constraint is added that pylint-django will only work with Python2.6 if pylint<=1.3 is installed
#40 - pylint 1.4 warned about View and Model classes not having enough public methods; this is suppressed
#37 - fixed an infinite loop when using astroid 1.3.3+
#36 - no longer warning about lack of __unicode__ method on abstract model classes
PR #34 - prevent warning about use of super() on ModelManager classes
PR #27 __ - better ForeignKey transforms, which now work when of the form othermodule.ModelClass. This also fixes a problem where an inferred type wou
Improved resilience to inference failure when Django types cannot be inferred (which can happen if Django is not on the system path
Improved resilience to inference failure when Django types cannot be inferred (which can happen if Django is not on the system path
Issue #25 __ Fixing cases where a module defines get as a method
Issue #25 Fixing cases where a module defines get as a method
Fixed a problem where type inference could get into an infinite loop
Fixed a problem where type inference could get into an infinite loop
Removed usage of a Django object, as importing it caused Django to try to configure itself and thus throw an ImproperlyConfigured exception.
Removed usage of a Django object, as importing it caused Django to try to configure itself and thus throw an ImproperlyConfigured exception.
Issue #7 __ Improved handling of Django model fields
Issue #7 Improved handling of Django model fields
Issue #10 No warning about missing unicode if the Django python3/2 compatibility tools are used
Issue #11 Improved handling of Django form fields
Issue #12 Improved handling of Django ImageField and FileField objects
Issue #14 Models which do not define unicode but whose parents do now have a new error (W5103) instead of incorrectly warning about no unicode being present.
Issue #21 ForeignKey and OneToOneField fields on models are replaced with instance of the type they refer to in the AST, which allows pylint to generate correct warnings about attributes they may or may not have.
Nothing published for this version
__unicode__ warning on models does not appear in Python3
Python3 is now supported
__unicode__ warning on models does not appear in Python3
Nothing published for this version
Pylint now recognises BaseForm as an ancestor of Form and subclasses
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →