Checks that __str__ method is defined in Django models.
Why is this bad?
Django models should define __str__ method to return a string representation
of the model instance, as Django calls this method to display the object in
the Django Admin and elsewhere.
Models without __str__ method will display a non-meaningful representation
of the object in the Django Admin.
Example
from django.db import models
class MyModel(models.Model):
field = models.CharField(max_length=255)
Use instead:
from django.db import models
class MyModel(models.Model):
field = models.CharField(max_length=255)
def __str__(self):
return f"{self.field}"
Good First Issue
%
pipx install ruff
%ruff --select=DJ --show-source .
%
ruff rule DJ008
django-model-without-dunder-str (DJ008)
Derived from the flake8-django linter.
What it does
Checks that
__str__
method is defined in Django models.Why is this bad?
Django models should define
__str__
method to return a string representation of the model instance, as Django calls this method to display the object in the Django Admin and elsewhere.Models without
__str__
method will display a non-meaningful representation of the object in the Django Admin.Example
Use instead:
%
ruff rule DJ012
Derived from the flake8-django linter.
What it does
Checks for the order of Model's inner classes, methods, and fields as per the [Django Style Guide].
Why is this bad?
The [Django Style Guide] specifies that the order of Model inner classes, attributes and methods should be as follows:
class Meta
def __str__()
def save()
def get_absolute_url()
Examples
Use instead: