🔖 Справочник: команды и методы Django-блока

🎯 Быстрый поиск К оглавлению урока

⚡ Топ-команды

python manage.py shell                 # Django Shell
python manage.py makemigrations        # создать миграции
python manage.py migrate               # применить миграции
python manage.py createsuperuser       # суперпользователь

Model.objects.create(...)              # создать и сохранить
Model.objects.all()                    # все записи
Model.objects.filter(field=value)      # фильтрация
Model.objects.get(pk=1)                # одна запись
Model.objects.filter(...).update(...)  # массовое обновление
Model.objects.filter(...).delete()     # массовое удаление

manage.py — ключевые команды

КомандаДействие
python manage.py runserverЗапустить сервер разработки
python manage.py startapp <name>Создать приложение
python manage.py makemigrationsСоздать файлы миграций
python manage.py migrateПрименить миграции к БД
python manage.py showmigrationsПросмотр состояния миграций
python manage.py createsuperuserСоздать суперпользователя
python manage.py shellDjango Shell (интерактивный REPL)

ORM — методы QuerySet

МетодВозвращаетОписание
.all()QuerySetВсе записи таблицы
.filter(**kwargs)QuerySetОтфильтрованные записи
.exclude(**kwargs)QuerySetИсключить совпадения
.get(**kwargs)Model instanceРовно одна запись (DoesNotExist / MultipleObjectsReturned)
.first()Model or NoneПервая запись
.last()Model or NoneПоследняя запись
.count()intКоличество записей
.exists()boolЕсть ли хотя бы одна запись
.values(*fields)QuerySet[dict]Словари вместо объектов
.order_by(*fields)QuerySetСортировка (- для обратной)
.update(**kwargs)intМассовое обновление
.delete()(int, dict)Удаление QuerySet
.create(**kwargs)Model instanceСоздать и сохранить
.bulk_create(objs)listМассовое создание
.bulk_update(objs, fields)intМассовое обновление объектов

Lookups — условия фильтрации

LookupОписание
field__exact=vТочное совпадение
field__iexact=vСовпадение без учёта регистра
field__contains=vСодержит подстроку (регистр важен)
field__icontains=vСодержит подстроку (регистр не важен)
field__in=[...]Входит в список
field__gt=vБольше чем v
field__gte=vБольше или равно v
field__lt=vМеньше чем v
field__lte=vМеньше или равно v
field__isnull=TrueЗначение NULL
field__startswith=vНачинается с v
field__istartswith=vНачинается с v (без регистра)
field__endswith=vЗаканчивается на v
field__iendswith=vЗаканчивается на v (без регистра)
field__range=[a, b]В диапазоне [a, b] включительно

Классы Q и F

from django.db.models import Q, F

# Q: логические операторы
Model.objects.filter(Q(a=1) | Q(b=2))   # OR
Model.objects.filter(Q(a=1) & Q(b=2))   # AND
Model.objects.filter(~Q(a=1))           # NOT

# F: операции над полями
Model.objects.update(price=F('price') * 1.1)
Model.objects.filter(discounted__lt=F('price'))

Admin — атрибуты ModelAdmin

АтрибутТипНазначение
list_displaytupleСтолбцы в списке объектов
search_fieldstupleПоля для поиска
list_filtertupleБоковые фильтры
orderingtupleПорядок сортировки
fieldstupleПоля в форме редактирования
list_per_pageintЗаписей на странице (100)
actionslistПользовательские действия
inlineslistИнлайн-формы
readonly_fieldstupleПоля только для чтения

Инлайн-формы

ПараметрОписание
modelСвязанная модель
extraЧисло пустых форм для новых объектов
max_numМаксимальное число инлайнов
fieldsОтображаемые поля
readonly_fieldsПоля только для чтения