блог django - система ответов пост-ответов - PullRequest
0 голосов
/ 01 июня 2010

У меня есть мини-приложение для блога и система ответов. Я хочу перечислить все записи мини-блога и их ответы, если таковые имеются. у меня есть в views.py

def profile_view(request, id):
        u = UserProfile.objects.get(pk=id)
        paginator = New.objects.filter(created_by = request.user) 
        replies = Reply.objects.filter(reply_to = paginator)
    return render_to_response('profile/publicProfile.html', {
        'object_list': u,
        'list':paginator,
        'replies':replies
        }, 
        context_instance=RequestContext(request)) 

и в шаблоне:

<h3>Recent Entries:</h3>
     {% for object in list %}
<li>{{ object.post }} <br />
{% for object in replies %}
{{ object.reply }} <br />
{% endfor %}

упоминание: reply_to - это ключ ForeignKey для New, а New - имя таблицы 'mini blog'

Но он показывает только все ответы для каждой записи в блоге, а не ответ для каждой записи, если есть один

спасибо

1 Ответ

3 голосов
/ 01 июня 2010

Во-первых, пожалуйста, подумайте над тем, чтобы дать вашим переменным разумные имена.New, list и paginator вовсе не описывают, что на самом деле представляют собой эти объекты - и в некоторых случаях они активно вводят в заблуждение, как в случае object_list, который вовсе не является списком, а представляет собой отдельный элемент.

Во-вторых, код выполняет именно то, о чем вы его просили (игнорируя тот факт, что код шаблона, который вы разместили, на самом деле недопустим, потому что вы неправильно размещаете циклы и переопределяете переменную object).Вы получаете все записи и все ответов, а затем показывает список всех ответов под каждой записью.

Вместо этого вы, очевидно, хотите прикрепить ответы к каждой записи.Поэтому удалите строки, относящиеся к Reply в представлении, и в шаблоне используйте обратное отношение :

{% for object in list %}
  {{ object.post }}
  {% for reply in object.reply_set.all %}
    {{ reply }}
  {% endfor %}
{% endfor %}

Наконец, как другие рекомендовали в ответ на ваш другойвопросы, вам было бы хорошо, прочитав учебник по Django и книгу Django, которые доступны бесплатно в Интернете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...