Как сделать вывод комментариев только для одной записи в джанго?

Для того чтобы сделать вывод комментариев только для одной записи в Django, вам потребуется создать связь между моделями записи и комментариев, а затем использовать фильтрацию для вывода только комментариев, относящихся к данной записи.

1. Создайте две модели: Post (запись) и Comment (комментарий).

   from django.db import models
   
   class Post(models.Model):
       title = models.CharField(max_length=255)
       content = models.TextField()
   
   class Comment(models.Model):
       post = models.ForeignKey(Post, on_delete=models.CASCADE, related_name='comments')
       author = models.CharField(max_length=100)
       body = models.TextField()
       created_at = models.DateTimeField(auto_now_add=True)

В модели Post мы указываем связь ForeignKey с моделью Comment, чтобы каждый комментарий имел ссылку на родительскую запись, а related_name позволяет обращаться к комментариям, связанным с записью.

2. Создайте представление, которое будет выводить комментарии только для одной записи.

   from django.shortcuts import render
   from .models import Post
   
   def post_detail(request, post_id):
       post = Post.objects.get(id=post_id)
       comments = post.comments.all()
       return render(request, 'post_detail.html', {'post': post, 'comments': comments})

В этом представлении мы получаем запись с помощью метода get и фильтруем комментарии, связанные с этой записью, с помощью обратного связывания по related_name. Затем передаем в шаблон объекты записи и комментарии.

3. Создайте шаблон post_detail.html, в котором вы можете отображать запись и комментарии.

   <h1>{{ post.title }}</h1>
   <p>{{ post.content }}</p>
   
   <h2>Комментарии</h2>
   {% for comment in comments %}
       <div>
           <p>{{ comment.author }}</p>
           <p>{{ comment.body }}</p>
           <p>{{ comment.created_at }}</p>
       </div>
   {% empty %}
       <p>Нет комментариев.</p>
   {% endfor %}

В этом шаблоне мы выводим содержимое записи и затем перебираем через цикл for комментарии, отображая автора, текст комментария и дату создания. Если комментариев нет, выводим сообщение об их отсутствии.

4. Настройте маршрут для представления в файле urls.py.

   from django.urls import path
   from .views import post_detail
   
   urlpatterns = [
       path('post/<int:post_id>/', post_detail, name='post_detail'),
   ]

В этом примере мы создаем динамический маршрут <int:post_id>, который будет передавать post_id в качестве параметра в представление post_detail.

Теперь, когда пользователь открывает URL вида /post/1/, он увидит запись с комментариями, относящимися только к этой записи. При необходимости вы можете добавить дальнейшие функциональные возможности, такие как возможность добавления новых комментариев или пагинацию для большого количества комментариев.