Я хочу выполнить полусложный запрос в Django. Например, я хочу что-то вроде этого:
SELECT
b.*,
(SELECT count(id) FROM comments c WHERE c.blog_id = b.id) AS number_of_comments
FROM blog b
WHERE 1
Исходя из моего фона PHP, в Code Igniter и Zend Framework есть "конструкторы запросов". Где вы можете построить SQL-запрос, используя методы в рамках. Это как в Django?
Каков наилучший способ построения и выполнения сложных запросов в Django? Есть ли рекомендуемый способ / лучшие практики для выполнения таких запросов?
UPDATE:
Я получил его с небольшими изменениями благодаря приведенному ниже коду mherren. Вот обновленная версия кода.
В моем views.py у меня есть это:
def index(request):
blog_posts = Blog.objects.all().annotate(Count('comment')).order_by('-pub_date')[:5]
return render_to_response('blog/index.html',
{'blog_posts': blog_posts})
В моем файле шаблона (index.html) у меня есть это:
Welcome...
{% if blog_posts %}
<ul>
{% for post in blog_posts %}
<li>
<b>
<a href="/blog/post/{{ post.id }}">{{ post.title }}</a>
</b> ({{ post.pub_date }})<br/>
{{ post.content }}<br/>
{{ post.comment__count }} comment(s)<br/>
by: {{ post.author }}<br/><br/>
</li>
{% endfor %}
</ul>
{% else %}
<p>No posts are available.</p>
{% endif %}
Надеюсь, это также поможет другим. Спасибо за все, ребята!