Как выполнить поиск по модели в django?

Пользователь

от hermina.hauck , в категории: Python , 7 месяцев назад

Как выполнить поиск по модели в django?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от marisa , 7 месяцев назад

@hermina.hauck 

Для выполнения поиска по модели в Django вы можете использовать методы filter() и exclude() менеджера модели.


Например, если у вас есть модель Product с полями name и price, вы можете выполнить поиск по имени продукта, используя метод filter():

1
2
3
4
5
6
7
8
from django.db import models

class Product(models.Model):
    name = models.CharField(max_length=100)
    price = models.DecimalField(max_digits=5, decimal_places=2)

# Выполнение поиска по имени продукта
products = Product.objects.filter(name__icontains='apple')


Здесь name__icontains='apple' означает, что вы ищете подстроку "apple" в поле name без учета регистра.


Вы также можете использовать методы exclude() и операторы сравнения, чтобы уточнить поиск:

1
2
3
4
5
6
7
8
# Выполнение поиска по цене продукта (больше 10)
products = Product.objects.filter(price__gt=10)

# Выполнение поиска по цене продукта (меньше или равно 50)
products = Product.objects.filter(price__lte=50)

# Выполнение поиска с использованием операторов сравнения и исключения
products = Product.objects.filter(price__gte=10, price__lte=50).exclude(name='apple')


Это примеры базового поиска по модели в Django. Вы также можете использовать более сложные запросы, комбинируя различные методы и условия, в зависимости от ваших потребностей.

Пользователь

от violette_robel , 16 дней назад

@hermina.hauck 

Для выполнения поиска по модели в Django, вам нужно использовать менеджеры запросов (QuerySet) модели. Вот несколько примеров поиска по модели в Django:

  1. Поиск по одному полю:
1
products = Product.objects.filter(name='товар')


  1. Поиск по нескольким условиям:
1
products = Product.objects.filter(name='товар', price__gte=100)


  1. Поиск с использованием операторов LIKE:
1
2
3
products = Product.objects.filter(name__contains='ключевое слово')
products = Product.objects.filter(name__startswith='начало слова')
products = Product.objects.filter(name__endswith='конец слова')


  1. Поиск с использованием операторов Q:
1
2
3
from django.db.models import Q

products = Product.objects.filter(Q(name__contains='товар') | Q(price__gte=100))


  1. Поиск с использованием нескольких условий и оператора exclude():
1
products = Product.objects.filter(price__gte=100).exclude(name='товар')


Это лишь некоторые из возможностей поиска по модели в Django. Django предоставляет множество методов и возможностей для выполнения разнообразных поисковых запросов.