DJANGO - Уникальные записи через ORM

Я новичок в DJANGO и надеялся получить помощь в решении этой задачи. Я застрял на этом в течение нескольких недель, пробуя многочисленные ответы, найденные в StackOverflow, но безрезультатно... Любая помощь или руководство будут оценены по достоинству.

Проблема: В качестве бизнес-кейса мне нужно собрать все необработанные данные (обновления заказов). Поскольку ежедневные обновления одного и того же заказа предоставляются ежедневно и сохраняются, мы начинаем накапливать множество дубликатов данных с разными датами импорта.

Задача: Создать табличное представление, которое отображает только изменения в заказе, используя ORM, если это возможно.

Отказ от ответственности: Я добился желаемого результата, обрабатывая набор данных через pandas. не в postgres, поэтому distinct() не работает

models.py

OrderUpdates(models.Model): import_date = models.DateField(auto_now=False, auto_now_add=False) order_number = models.CharField(max_length=15,unique=False) field1 = models.CharField(max_length=25,unique=False)

Выборочное ожидание:

        *RAW DATA*
import_date order_no field1
10/30/22 A raw
10/30/22 B raw
11/01/22 A raw
11/01/22 B raw
11/02/22 A updated
11/03/22 B raw
11/03/22 A updated
11/03/22 B raw
       *UNIQUE VIEW*
import_date order_no field1
10/30/22 A raw
11/02/22 A updated
10/30/22 B raw

Подход: Мой текущий подход заключается в следующем: Запросить объект > создать составной ключ > упорядочить по составному ключу и дате импорта > получить подсчет

query = OrderUpdates.objects.annotate(cid=Concat('order_number','field1', output_field=CharField())).order_by('cid','-import_date').values('cid').annotate(count_id=Count('cid')

Я надеялся, что это даст мне подсчет моих составных ключей, отсортированных по дате импорта, чтобы я мог просто отфильтровать для count=1 и использовать его в качестве подзапроса в другом наборе запросов. Но этот набор запросов возвращает все записи в виде числа '1'...

Спасибо!

Вернуться на верх