pip install pylint-django
pylint-django will not install
Django by default because
this causes more trouble than good,
see discussion. If you wish
to automatically install the latest version of
pip install pylint-django[with_django]
otherwise sort out your testing environment and please DO NOT report issues about missing Django!
pylint-django is installed and on your path and then execute:
pylint --load-plugins pylint_django [..other options..] <path_to_your_sources>
If you have
prospector installed, then
pylint-django will already be
installed as a dependency, and will be activated automatically if Django is
prospector [..other options..]
- Prevents warnings about Django-generated attributes such as
- Prevents warnings when using
ForeignKeyattributes ("Instance of ForeignKey has no <x> member").
- Fixes pylint's knowledge of the types of Model and Form field attributes
Metainformational classes on forms and models do not generate errors.
- Flags dangerous use of the exclude attribute in ModelForm.Meta.
pylint_django.checkers.db_performance looks for migrations which add new
model fields and these fields have a default value. According to
this may have performance penalties especially on large tables. The prefered way
is to add a new DB column with
null=True because it will be created instantly
and then possibly populate the table with the desired default values.
Only the last migration from a sub-directory will be examined!
This plugin is disabled by default! To enable it:
pylint --load-plugins pylint_django --load-plugins pylint_django.checkers.db_performance
If you reference foreign-key models by their name (as string)
pylint-django may not be
able to find the model and will report issues because it has no idea what the underlying
type of this field is. If your
models.py itself is not importing the foreign-key class
there's probably some import problem (circular dependencies) preventing referencing the
foreign-key class directly, in which case
pylint-django can't do a huge amount.
If it's just done for convenience that's really up to you the developer to fix.
Please feel free to add your name to the
CONTRIBUTORS.rst file if you want to
be credited when pull requests get merged. You can also add to the
CHANGELOG.rst file if you wish, although we'll also do that when merging.
The structure of the test package follows that from pylint itself.
It is fairly simple: create a module starting with
func_ followed by
a test name, and insert into it some code. The tests will run pylint
against these modules. If the idea is that no messages now occur, then
that is fine, just check to see if it works by running
Ideally, add some pylint error suppression messages to the file to prevent spurious warnings, since these are all tiny little modules not designed to do anything so there's no need to be perfect.
It is possible to make tests with expected error output, for example, if
adding a new message or simply accepting that pylint is supposed to warn.
test_file_name.txt file contains a list of expected error messages in the
error-type:line number:class name or empty:1st line of detailed error text.
pylint-django is available under the GPLv2 license.