Django получить последнее уникальные значения

У меня есть курс для пользователей, в который входит задача Item. И пользователи добавляют решения Solution. Один пользователь может создать много решений одной и той же задачи

class Solution(models.Model):
     user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='user')
     item = models.ForeignKey(Item, on_delete=models.CASCADE, related_name='item')

Как мне получить только последнее решение пользователя? Я делаю так:

s = Solution.objects.filter(user=user, item__isnull=False).distinct('item')

Получаю уникальные решения, но не последние, а рандомные. Есть поле timestamp но как его использовать? или как то по id?


Ответы (1 шт):

Автор решения: Sergey Tatarincev

используя distinct вы получаете записи с уникальным значением 'item'без упорядочивания

Всем записям при создании устанавливается уникальный id, увеличивающийся от записи к записи, поэтому

s = Solution.objects.filter(user=user, item__isnull=False).distinct('item').order_by('-id')[0]
→ Ссылка