У меня есть следующие данные,Джанго Использование order_by с .annotate() и получение связанных с поля
Этот запрос группы по TopicID, а затем в каждой группе получает максимальную дату, частота сообщений и подсчитывает число авторов как участников,
info_model = InfoModel.objects.values('topicid')
.annotate(max=Max('date'), freq=Count('postid'),
contributors=Count('author', distinct=True))
Этот запрос затем может отображаться следующим образом,
Q.1 (SOLVED) Как я могу упорядочить строки по дате, от самых последних? Я приложил .order_by («дата») на запрос, который кажется наиболее очевидным решением, но это производит,
полностью изменяя «частота» и «вклад».
EDIT: упорядочение может быть достигнуто путем добавления .order_by («-») макс
В.2 Как я могу отобразить «пост» на эту дату? Таким образом, после колонки должны отображаться,
я
увидимся
чао
йойо
Я думал, что должно работать с {{item.post}}, но нет такого удачи.
<table class='table table-striped table-hover'>
<thead>
<tr>
<th>freq</th>
<th>topicid</th>
<th>date</th>
<th>contributors</th>
<th>post</th>
</tr>
</thead>
<tbody>
{% for item in info %}
<tr>
<td>{{ item.freq }}</td>
<td>{{ item.topicid }}</td>
<td>{{ item.max }}</td>
<td>{{ item.contributors }}</td>
<td>{{ item.post }}</td>
</tr>
{% endfor %}
</tbody>
</table>
Спасибо,
Edit:
я могу получить правильный результат с сырым SQL, но не может это сделать WTH запрос Django,
info_model = list(InfoModel.objects.raw('SELECT *,
max(date),
count(postid) AS freq,
count(DISTINCT author) AS contributors FROM
crudapp_infomodel GROUP BY topicid ORDER BY date DESC'))
Я упрощена и повторно отправил эта проблема здесь Rewrite raw SQL as Django query
Я написал решение здесь http://stackoverflow.com/questions/37908049/get-related-column-on-annotate-data-django/37911943#37911943 –