- Придерживаемся black style
- f-строки предпочтительнее функции или выражений форматирования:
Т.е. так плохоТак хорошоdef __str__(self): return "{} {}".format(self.name, self.type)
def __str__(self): return f"{self.name} - {self.type}"
- По возможности используем кортежи вместо списков. Кортеж - неизменяемый объект. Вот тут про различия
Т.е. так не нужно
Лучше так
filterset_fields = ["year"]
filterset_fields = ("year",)
- Если хотя бы одно одно описание поля не помещается на одну строку, то для всех атрибутов полей используйте выделенную строку.
T.e так плохоТак хорошоfirst_field = models.ForeignKey(Person, on_delete=models.PROTECT) second_field = models.CharField( max_length=200, unique=True, )
first_field = models.ForeignKey( Person, on_delete=models.PROTECT, ) second_field = models.CharField( max_length=200, unique=True, )
- У модели всегда должен присутствовать метод
__str__
- У каждой модели должно быть
verbose_name
иverbose_name_plural
- Для регистрации моделей в админке используем декоратор (документация)
T.e так плохоТак хорошоfrom django.contrib import admin from .models import Author class AuthorAdmin(admin.ModelAdmin): pass admin.site.register(Author, AuthorAdmin)
from django.contrib import admin from .models import Author @admin.register(Author) class AuthorAdmin(admin.ModelAdmin): pass