Каков основной способ работы с базами данных в Django?

«Каков основной способ работы с базами данных в Django?» — вопрос из категории Django, который задают на 10% собеседований Python Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Основной способ взаимодействия с базами данных в Django — использование встроенного ORM (Object-Relational Mapping). Этот подход позволяет разработчикам работать с данными как с Python-объектами, абстрагируясь от написания SQL-запросов напрямую.

Почему это удобно?

  • Продуктивность: Код пишется быстрее и в объектно-ориентированном стиле.
  • Переносимость: Легко переключаться между различными СУБД (PostgreSQL, MySQL, SQLite), не меняя код.
  • Безопасность: ORM помогает предотвратить SQL-инъекции.

Процесс работы состоит из трех ключевых шагов:

  1. Определение моделей в файле models.py приложения. Модель — это Python-класс, который представляет таблицу в базе данных.

    from django.db import models
    
    class Product(models.Model):
        name = models.CharField(max_length=200)
        price = models.DecimalField(max_digits=10, decimal_places=2)
        is_available = models.BooleanField(default=True)
    
        def __str__(self):
            return self.name
  2. Создание и применение миграций. Миграции — это файлы, которые описывают изменения в структуре БД.

    # Создает файлы миграций на основе изменений в моделях
    python manage.py makemigrations
    
    # Применяет миграции к базе данных, создавая или изменяя таблицы
    python manage.py migrate
  3. Взаимодействие с данными через менеджер objects.

    # Создание объекта (INSERT)
    new_product = Product.objects.create(name='Laptop', price=1200.00)
    
    # Получение объектов (SELECT)
    laptops = Product.objects.filter(name__icontains='Laptop')
    
    # Обновление объекта (UPDATE)
    product_to_update = Product.objects.get(id=1)
    product_to_update.price = 1150.00
    product_to_update.save()
    
    # Удаление объекта (DELETE)
    Product.objects.get(id=2).delete()

Настройки подключения к базе данных находятся в словаре DATABASES в файле settings.py.