Mediumdjangoorm

Что такое Django ORM?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

Django ORM — встроенный object-relational mapping. Models → таблицы БД, QuerySet API для запросов.

from django.db import models

class User(models.Model):
    name = models.CharField(max_length=100)
    age = models.IntegerField(default=0)
    created_at = models.DateTimeField(auto_now_add=True)

# Миграции: python manage.py makemigrations && migrate

# QuerySet API
User.objects.all()
User.objects.filter(age__gte=18)               # __gt, __gte, __lt, __contains, __in
User.objects.get(id=1)
User.objects.create(name='Alice')

# Q objects — сложные OR/AND
from django.db.models import Q, F, Count, Avg
User.objects.filter(Q(name='A') | Q(name='B'))
User.objects.update(age=F('age') + 1)          # ссылка на поле
User.objects.annotate(post_count=Count('post'))
  • Relations: ForeignKey, ManyToManyField, OneToOneField;
  • select_related (JOIN для FK) и prefetch_related (для M2M) — оптимизация N+1;

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.