Django объединяет QuerySet с сохранением порядка

Я пытаюсь объединить 2 набора запросов. Сейчас я использую оператор |, но такой способ не будет работать как "append".

Мой текущий код таков:

df = RegForm((querysetA.all() | querysetB.all()).distinct())

Мне нужно, чтобы элементы из querysetA находились перед querysetB. Можно ли этого добиться, оставляя их просто запросами?

Это можно решить, используя annotate для добавления пользовательского поля для упорядочивания на querysets, и использовать это в union вот так:

a = querysetA.annotate(custom_order=Value(1))
b = querysetB.annotate(custom_order=Value(2))
a.union(b).order_by('custom_order')

Прежде чем , вам необходимо указать output_field для Value:

from django.db.models import IntegerField


a = querysetA.annotate(custom_order=Value(1, IntegerField()))
b = querysetB.annotate(custom_order=Value(2, IntegerField()))
Вернуться на верх