РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
110 of 818 menu

Лукап iendswith

Лукап iendswith применяется к текстовым полям модели и позволяет выполнять регистронезависимую проверку окончания строки. Он возвращает записи, у которых значение поля заканчивается на переданную подстроку без учета регистра символов. Лукап используется в методах фильтрации filter, exclude и других, где требуется сравнение строк.

Синтаксис

Model.objects.filter(field__iendswith=value)

В качестве параметра передается подстрока, наличие которой в конце значения поля проверяется. Поиск выполняется без учета регистра.

Пример . С моделью Article

Рассмотрим модель статьи с полями для заголовка и содержимого:

from django.db import models class Article(models.Model): title = models.CharField(max_length=100) content = models.TextField() def __str__(self): return self.title

Добавим несколько записей в базу данных:

Article.objects.create(title="Django Tutorial", content="Django basics") Article.objects.create(title="django Best Practices", content="Advanced Django") Article.objects.create(title="Python Django Guide", content="Django and Python") Article.objects.create(title="Web Development", content="Web with Django")

Выполним запрос для поиска статей, заголовки которых заканчиваются на "torial" без учета регистра:

articles = Article.objects.filter(title__iendswith="torial") for article in articles: print(article.title)

Результат выполнения кода:

"Django Tutorial"

Пример . С моделью User

Рассмотрим модель пользователя с различными текстовыми полями:

from django.db import models class User(models.Model): username = models.CharField(max_length=50) email = models.EmailField() first_name = models.CharField(max_length=30) last_name = models.CharField(max_length=30) def __str__(self): return self.username

Заполним таблицу несколькими пользователями:

User.objects.create(username="john_doe", email="JOHN@example.com", first_name="John", last_name="Doe") User.objects.create(username="jane_doe", email="JANE@example.org", first_name="Jane", last_name="Doe") User.objects.create(username="admin", email="ADMIN@site.com", first_name="Admin", last_name="User") User.objects.create(username="guest", email="GUEST@test.net", first_name="Guest", last_name="Visitor")

Найдем пользователей, чьи email адреса заканчиваются на ".org" без учета регистра:

users = User.objects.filter(email__iendswith=".org") for user in users: print(f"{user.username}: {user.email}")

Результат выполнения кода:

"jane_doe: JANE@example.org"

Пример . С комбинированными условиями

Лукап iendswith можно комбинировать с другими условиями фильтрации:

from django.db.models import Q users = User.objects.filter( Q(last_name__iendswith="e") & Q(first_name__startswith="J") ) for user in users: print(f"{user.first_name} {user.last_name}")

Результат выполнения кода:

"John Doe" "Jane Doe"

Пример . С исключением записей

Используем лукап iendswith с методом exclude для исключения записей:

users = User.objects.exclude(email__iendswith=".com") for user in users: print(f"{user.username}: {user.email}")

Результат выполнения кода:

"jane_doe: JANE@example.org" "guest: GUEST@test.net"

Смотрите также

  • лукап endswith,
    который выполняет регистрозависимую проверку окончания строки
  • лукап istartswith,
    который проверяет начало строки без учета регистра
  • лукап icontains,
    который проверяет наличие подстроки без учета регистра
  • лукап exact,
    который выполняет точное сравнение строк
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить