Django - список объектов, не видимых в DetailView - PullRequest
0 голосов
/ 28 мая 2020

У меня есть список сообщений на моей домашней странице, которые являются ссылками на сообщение DetailView. Ссылки работают правильно, но когда я go в DetailView, список больше не отображается - мне нужно go вернуться на главную страницу, чтобы выбрать другое сообщение. Элемент, отображающий список сообщений, расположен на базе. html, правильно передает список объектов на главную. html, а в post_detail. html список пуст.

Домашняя страница выглядит так

Post DetailView выглядит следующим образом - список сообщений больше не отображается

Проверить вид на домашней странице

Неприличный вид в DetailView - элемент ul пуст

base. html

<body>
<div>
    <ul>
        <li>
            <a href="{% url 'blog-home' %}"> home</a>
        </li>

        <li>
            <a> items</a>
            <ul>
                {% for post in posts %}
                <li>
                    <a href="{% url 'post-detail' post.id %}"> {{ post.title }}</a>
                </li>
                {% endfor %}
            </ul>
        </li>       
    </ul>

</div>
<di>
{% block content %}
{% endblock content %}
</div>
</body>

home. html

{% extends "blog/base.html" %}

{% block content %}
{% for post in posts %}
    <div>
        <a href="#">{{post.title}}</a>
        <p>{{post.content}}</p>
        <p>{{post.date_posted}}</p>
    </div>
{% endfor %}
{% endblock content %}

post_detail. html

{% extends "blog/base.html" %}

{% block content %}
    <div>
        <a href="#">{{object.title}}</a>
        <p>{{object.content}}</p>
    </div>
{% endblock content %}

urls.py

from django.urls import path
from .views import PostListView, PostDetailView
from . import views



urlpatterns = [
    path('', PostListView.as_view(), name='blog-home'),
    path('post/<int:pk>/', PostDetailView.as_view(), name='post-detail'),
]

views.py

from django.shortcuts import render
from django.views.generic import ListView, DetailView
from .models import Post

class PostListView(ListView):
    model = Post
    template_name = 'blog/home.html'  
    context_object_name = 'posts'

class PostDetailView(DetailView):
    model = Post

models.py

from django.db import models


class Post(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()

    def __str__(self):
        return self.title

1 Ответ

0 голосов
/ 28 мая 2020

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

class PostDetailView(DetailView):
    model = Post

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['other_posts'] = Post.objects.all()
        return context
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...