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

Метод union

Метод union применяется к QuerySet и возвращает новый QuerySet, содержащий уникальные записи, полученные в результате объединения нескольких исходных наборов данных. В качестве аргументов метод принимает один или несколько QuerySet, которые должны иметь одинаковую структуру полей. По умолчанию метод удаляет дубликаты, но это поведение можно изменить с помощью параметра all.

Синтаксис

queryset1.union(queryset2, queryset3, ..., all=False)

Пример

Давайте объединим две модели пользователей:

from myapp.models import User from django.db import models class Student(models.Model): name = models.CharField(max_length=100) age = models.IntegerField() class Teacher(models.Model): name = models.CharField(max_length=100) age = models.IntegerField() # Get all students and teachers students = Student.objects.all().values('name', 'age') teachers = Teacher.objects.all().values('name', 'age') # Union of students and teachers res = students.union(teachers) for person in res: print(person)

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

{"name": "John", "age": 20} {"name": "Mary", "age": 22} {"name": "Peter", "age": 35}

Пример

Объединим QuerySet с сохранением всех записей, включая дубликаты:

from myapp.models import Article from django.db import models # Get articles from two different queries recent_articles = Article.objects.filter(created_at__year=2025) popular_articles = Article.objects.filter(views__gt=100) # Union with all duplicates res = recent_articles.union(popular_articles, all=True) print(res.count())

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

"Total articles count: 15"

Пример

Объединим несколько QuerySet с разными условиями фильтрации:

from myapp.models import Product from django.db import models # Get products from different categories electronics = Product.objects.filter(category='electronics') books = Product.objects.filter(category='books') furniture = Product.objects.filter(category='furniture') # Union of all three categories res = electronics.union(books, furniture) for product in res.values('name', 'category'): print(product)

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

{"name": "Laptop", "category": "electronics"} {"name": "Python Book", "category": "books"} {"name": "Desk", "category": "furniture"}

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

  • метод intersection,
    который возвращает общие элементы между QuerySet
  • метод difference,
    который возвращает элементы, присутствующие только в одном QuerySet
  • метод filter,
    который фильтрует QuerySet по заданным условиям
  • метод values,
    который возвращает QuerySet словарей с указанными полями
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить