Как отобразить комментарий в конкретном посте - PullRequest
1 голос
/ 08 мая 2020

как отобразить комментарий к конкретному сообщению в Django. Я просмотрел множество руководств и могу понять, что комментарии могут отображаться с помощью ForeignKey в сообщении, используя related_name и id, проходящие через url. Я застрял в этой проблеме, я буду рад, если кто-то здесь может мне помочь с этим, я хочу отображать комментарии к каждому конкретному сообщению без добавления related_name в модель.

class Post(models.Model):
    poster_profile = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE, blank=True,null=True)

class Comments (models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE, blank=True,null=True)
    commented_image = models.ForeignKey(Post, on_delete=models.CASCADE, null=True, blank=True) #i don't want a related_name
    comment_post = models.TextField()

def home_view(request):
    all_comments = Comments.objects.filter(user=request.user, active=True)
    posts = Comments.objects.filter(pk__in=all_comments)
context = {'posts': posts}
return render(request,'home.html', context)

#this displays all comments for all post, how do i assign comments to the particular post commented on
{% for comment in posts %}
<p>{{ comment.comment_post }}</p>
{% endfor %}

1 Ответ

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

Вы можете отфильтровать первичный ключ модели commented_image (который является ForeignKey для модели Post) с помощью:

def comments_on_post(request<b>, post_pk</b>):
    all_comments = Comments.objects.filter(
        user=request.user,
        active=True,
        <b>commented_image_id=post_pk</b>
    )
    context = {'posts': all_comments }
    return render(request,'home.html', context)

Конечно, это означает, что в URL-адресе вы должны закодировать первичный ключ Post. Таким образом, urls.py имеет список urlpatterns с:

# app/urls.py

from app import views

urlpatterns = [
    # &hellip;,
    path('comments/<b><int:post_pk></b>', views.comments_on_post)
]

, так что вы можете затем запустить просмотр, посетив comments/14, например, чтобы получить комментарии для Post с помощью pk=14 ( учитывая, что есть конечно).

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