Для начала создадим еще одно приложение, чтобы мы могли рассмотреть как можно больше методов.
Создадим новое приложение в нашем проекте:
python manage.py startapp orm_method
И добавим модели в приложение orm_method.
from django.db import models
from django.utils import timezone
class Worker(models.Model):
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
age = models.SmallIntegerField(null=True)
created = models.DateTimeField(default=timezone.now)
work_experience = models.SmallIntegerField(default=0)
Зарегистрируем приложение в INSTALLED_APPS и выполним миграции.
python manage.py makemigrations
python manage.py migrate
Запустим шелл, импортируем модели:
python manage.py shell
from orm_method.models import Worker
Заполним таблицу:
Worker.objects.create(first_name='Roger', last_name='Campbell', age=25, work_experience=5)
Worker.objects.create(first_name='John', last_name='Rodriguez', age=31, work_experience=3)
Worker.objects.create(first_name='Ryan', last_name='Medina', age=43)
Worker.objects.create(first_name='Michael', last_name='Smith', age=28, work_experience=3)
Worker.objects.create(first_name='Steven', last_name='Bryant', age=33, work_experience=7)
Worker.objects.create(first_name='Jessie', last_name='Smith', age=29, work_experience=2)
Worker.objects.create(first_name='Ted', last_name='Murphy', age=34)
Теперь мы можем приступить к изучению методов возвращающих QuerySet.
all()
Начнем с самого простого метода. Он возвращает объект QuerySet, который содержит все объекты из таблицы.
Worker.objects.all()
Вы можете использовать нотацию срезов Python для нарезки QuerySet.
filter()
Начнем с самого простого фильтра. Вы можете фильтровать с помощью одного поискового условия:
Worker.objects.filter(last_name='Smith')
Мы выбрали работников с фамилией Smith.
А также вы можете фильтровать с несколькими поисковыми условиями:
Worker.objects.filter(last_name='Smith', age=28)
В обоих вышеуказанных случаях Django переводит поисковые условия в предложение SQL WHERE.
exclude()
Можно исключить некоторые результаты из запроса с помощью метода exclude().
Worker.objects.exclude(first_name='John')
Мы получили всех работников, кроме работников с именем John.