Я просто хочу включить ID
(и другие поля) в результат аннотации со значениями (например, сгруппировать по).
Я объясню на примере (ниже - Например, пожалуйста, прекратите свое недоверие к этой плохой модели),
class Book(models.Model):
name = models.CharField()
version = models.IntegerField() # Assming its just a number that increments when each version is published like 1...2...3 and so on.
published_on = models.DateTimeField()
author = models.ForeignKey(User)
class Text(models.Model):
book_text = models.ForeignKey(Book)
Я хочу максимальную версию (или выпуски) Книги, которую я получаю с помощью
Book.objects.values('name', 'author').annotate(Max('version'))
**Generated SQL (MYSQL) query**:
SELECT "name",
"author",
Max("version") AS "version__max"
FROM "book"
GROUP BY "name",
"author"
Но приведенный выше результат не содержит ID
или published_on
, если я добавляю их к значениям, которые он также группирует по ним, чего я не хочу. Я хочу сгруппировать только по name
и author
, но хочу другие поля или, по крайней мере, получить идентификатор.
Expected SQL:
SELECT "id",
"published_on",
"name",
"author",
Max("version") AS "version__max"
FROM "book"
GROUP BY "name",
"author"