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'...
Спасибо!