Django ORM дублирует объекты в наборе запросов после упорядочивания по полю foreignkey

Я столкнулся с неожиданным поведением при сортировке объектов. Как только я сортирую по связанному полю модели, я получаю дубликаты. Краткое описание полей модели

models.py

class GoogleCreativeSpend(models.Model):
    creative = models.ForeignKey(
        'GoogleCreative',
        on_delete=models.CASCADE,
    )
    spend = models.DecimalField()

class GoogleCreative(CreamCreative):
     .....

Создайте несколько объектов:

>>> creative = GoogleCreative.objects.get(name='gs_video1031v1')
>>> spend = GoogleCreativeSpend(creative=creative, spend=100,)
>>> spend.save()
>>> spend = GoogleCreativeSpend(creative=creative, spend=1100,)
>>> spend.save()
>>> spend = GoogleCreativeSpend(creative=creative, spend=1,)
>>> spend.save()

views.py

queryset = GoogleCreative.objects.all()
queryset.order_by('googlecreativespend__spend')
for i in queryset:     
    if i.name == 'gs_video1031v1':
        print(i.name)  


| gs_video1031v1
| gs_video1031v1
| gs_video1031v1

Например, создав 3 объекта googlespend, я получаю 3 дубликата для googlecreative после сортировки.

Как отсортировать набор запросов на основе внешнего ключа без дубликатов Я пробовал

queryset.distinct()

и

queryset.distinct('googlecreativespend__spend') 

Но это не работает

Как это исправить?

Найти решение с помощью Avg

queryset = queryset.annotate(spend=Avg('googlecreativespend__spend'))
queryset.order_by('spend')
Вернуться на верх