🔖 Справочник: Команды и поля Django

⚡ Быстрая шпаргалка

  • python manage.py makemigrations — создать миграцию
  • python manage.py migrate — применить миграции
  • python manage.py createsuperuser — создать суперпользователя
  • python manage.py shell — интерактивная оболочка Django
  • admin.site.register(Model) — зарегистрировать модель в Admin

Команды manage.py

КомандаОписание
python manage.py makemigrations Создать файлы миграций на основе изменений в models.py
python manage.py makemigrations <app> Создать миграцию только для указанного приложения
python manage.py migrate Применить все не применённые миграции к БД
python manage.py migrate <app> <migration> Применить миграцию до указанного номера (откат)
python manage.py showmigrations Показать список миграций и статус применения
python manage.py sqlmigrate <app> <name> Показать SQL-запросы, которые сгенерирует миграция
python manage.py createsuperuser Создать суперпользователя для Admin-панели
python manage.py shell Запустить интерактивную Python-оболочку с контекстом Django
python manage.py dbshell Запустить интерактивную оболочку БД (psql, sqlite3)
python manage.py runserver Запустить сервер разработки на http://127.0.0.1:8000/

Типы полей Django (все из лекции)

Строковые поля

ПолеSQL-типОбязательные параметры
CharFieldVARCHAR(n)max_length
TextFieldTEXT
EmailFieldVARCHAR(254)
SlugFieldVARCHAR(50)
URLFieldVARCHAR(200)

Числовые поля

ПолеSQL-типПараметры
IntegerFieldINTEGER
BigIntegerFieldBIGINT
SmallIntegerFieldSMALLINT
PositiveIntegerFieldINTEGER (≥0)
PositiveSmallIntegerFieldSMALLINT (≥0)
FloatFieldDOUBLE PRECISION
DecimalFieldNUMERIC(m,d)max_digits, decimal_places
BigAutoFieldBIGSERIAL
AutoFieldSERIAL

Логические поля

ПолеSQL-типПримечание
BooleanFieldBOOLEANАктуально
NullBooleanFieldBOOLEAN NULLУстарело → BooleanField(null=True)

Поля дата/время

ПолеSQL-типПолезные параметры
DateFieldDATEauto_now, auto_now_add
TimeFieldTIMEauto_now, auto_now_add
DateTimeFieldDATETIME / TIMESTAMPauto_now, auto_now_add
DurationFieldBIGINT (мкс)Хранит Python timedelta

Поля связей

ПолеСвязьОбязательные параметры
ForeignKeyN:1 (многие к одному)to, on_delete
ManyToManyFieldN:M (многие ко многим)to
OneToOneField1:1 (один к одному)to, on_delete

Значения on_delete:

ЗначениеПоведение при удалении родителя
CASCADEУдалить дочерние объекты
PROTECTЗапретить удаление, если есть зависимые объекты
SET_NULLУстановить NULL (нужен null=True)
SET_DEFAULTУстановить значение по умолчанию
DO_NOTHINGНичего не делать (может нарушить целостность)

Общие параметры полей

ПараметрПо умолчаниюОписание
nullFalseРазрешает NULL в базе данных
blankFalseРазрешает пустое значение в форме
choicesНабор допустимых вариантов значений
defaultЗначение по умолчанию
primary_keyFalseСделать первичным ключом
uniqueFalseУникальное значение в таблице
verbose_nameЧитаемое имя поля для Admin
help_textПодсказка в Admin и формах
db_indexFalseСоздать индекс для поля
editableTrueРазрешить редактирование в Admin
error_messagesКастомные сообщения об ошибках
validators[]Список валидаторов
unique_for_dateУникальность в пределах даты
unique_for_monthУникальность в пределах месяца
unique_for_yearУникальность в пределах года

Регистрация модели в Admin

# myapp/admin.py
from django.contrib import admin
from .models import Book

# Простая регистрация
admin.site.register(Book)

# Расширенная регистрация с ModelAdmin
@admin.register(Book)
class BookAdmin(admin.ModelAdmin):
    list_display = ('title', 'author', 'published_date', 'in_stock')
    list_filter = ('in_stock', 'genre')
    search_fields = ('title', 'author')
    ordering = ('-published_date',)