• ORM (Object-Relational Mapping): Позволяет взаимодействовать с базой данных, используя объекты Python (модели), вместо написания SQL-запросов напрямую.
  • Модель: Класс Python, наследующийся от django.db.models.Model. Представляет таблицу в базе данных.
  • Поле модели: Атрибут класса модели. Представляет столбец в таблице.
  • Экземпляр модели: Объект класса модели. Представляет строку в таблице.
    # models.py
    from django.db import models
     
    class Person(models.Model):
        first_name = models.CharField(max_length=50, verbose_name="Имя")
        last_name = models.CharField(max_length=50, 
        verbose_name="Фамилия")
        age = models.IntegerField(null=True, blank=True, 
        verbose_name="Возраст")
     
        def __str__(self):
              return f"{self.first_name} {self.last_name}"
  • Типы полей (models.*):
    • CharField: Текстовое поле (обязателен max_length).
    • TextField: Большое текстовое поле.
    • IntegerField: Целое число.
    • BooleanField: Логическое значение (True/False).
    • DateTimeField: Дата и время.
    • DateField: Дата.
    • TimeField: Время.
    • DecimalField: Десятичное число с фиксированной точностью (обязательны max_digits, decimal_places).
    • EmailField: Строка для email (с базовой валидацией).
    • FileField: Поле для загрузки файлов (требует настройки MEDIA_ROOT и MEDIA_URL).
    • ImageField: Специализированное поле для изображений (наследуется от FileField, требует Pillow).
    • ForeignKey: Связь “один ко многим” с другой моделью.
    • ManyToManyField: Связь “многие ко многим”.
    • OneToOneField: Связь “один к одному”.
    • AutoField: Автоинкрементное целочисленное поле (обычно первичный ключ id, добавляется автоматически).
    • SlugField: Поле для хранения “слага” (короткой метки для URL).
    • URLField: Поле для хранения URL (с валидацией).
    • UUIDField: Поле для хранения UUID.
  • Аргументы полей (наиболее частые):
    • max_length: Максимальная длина (для CharField).
    • null=True/False: Разрешено ли хранить NULL в базе данных (по умолчанию False).
    • blank=True/False: Разрешено ли оставлять поле пустым в формах (валидация Django) (по умолчанию False).
    • default: Значение по умолчанию для поля.
    • choices: Итерируемый объект (например, список кортежей) для ограничения возможных значений поля (отображается как <select> в админке).
    • verbose_name: Человекочитаемое имя поля (для админки, форм).
    • unique=True/False: Должно ли значение в этом поле быть уникальным в таблице.
    • db_index=True/False: Создавать ли индекс для этого поля в БД.
    • primary_key=True/False: Является ли поле первичным ключом.
    • editable=True/False: Будет ли поле отображаться в админке для редактирования.
    • auto_now=True/False: (Для DateField/DateTimeField) Автоматически обновлять поле текущей датой/временем при каждом сохранении объекта (.save()).
    • auto_now_add=True/False: (Для DateField/DateTimeField) Автоматически устанавливать поле в текущую дату/время при первом создании объекта.
    • Для связей (ForeignKey, OneToOneField):
      • on_delete: Действие при удалении связанного объекта (models.CASCADE, models.PROTECT, models.SET_NULL, models.SET_DEFAULT, models.DO_NOTHING, models.SET(...)).
      • related_name: Имя для обратной связи от связанной модели.

〰〰〰 𓆝 𓆟 𓆞 𓆝 𓆟 𓆝 𓆟 𓆞 〰〰〰