У меня есть 2 разные модели в одном приложении
class Book(models.Model):
title = models.CharField(max_length=250, unique=True)
slug = models.SlugField(max_length=50)
description = models.TextField(max_length=500)
class Chapter(models.Model):
book = models.ForeignKey(Book,on_delete=models.CASCADE)
num = models.PositiveIntegerField(verbose_name="Chapter Number")
rdate = models.DateTimeField(verbose_name="Release Date", default=timezone.now)
Я хочу получить все книги, упорядоченные по убыванию даты выпуска rdate
Я попробовал:
Book.objects.all().order_by('-chapter__rdate').distinct()
В результате были найдены дубликаты, добавлено только 2 книги, поэтому дублирована только 1 книга.В результате получилось что-то вроде этого: Book1, Book2, Book2
Я уже видел заметку от здесь , и я использую SQLite.Используя values (), я не смогу вызвать get_absolute_url () и некоторые другие методы, которые я хочу вызвать, поэтому использование values () не подлежит обсуждению.
Далее я попытался аннотировать главу rdateв запрос к книге, подобный этому Book.objects.all().annotate(bdate=ExpressionWrapper(F('chapter__rdate'), output_field=DateTimeField())).order_by('-bdate').distinct()
Все еще закончился тем же результатом.Я полностью потерян, пожалуйста, нужна помощь.Я, вероятно, не буду сейчас переходить на PostgreSQL, но я мог бы использовать его при развертывании приложения, поэтому я хочу, чтобы это было возможно как для версии SQLite, так и для версии PostgreSQL, если это возможно.Решение SQLite абсолютно необходимо для меня, так как его легко использовать в разработке.