Получение ошибки .................. Значение QuerySet для точного поиска должно быть ограничено одним результатом с помощью нарезки

Я создаю сайт социальной медиа на django.Когда я попытался перечислить все комментарии на индексной странице, я получаю эту ошибку, The QuerySet value for an exact lookup must be limited to one result using slicing and when i am using.... comments = PostComment.objects. filter(post__in=allPost)... вместо ....comments = PostComment.objects.filter(post=allPost).... набор запросов не фильтруется и я получаю одни и те же комментарии во всех постах, в основном я хочу показать комментарии под всеми постами и этот комментарий должен быть отнесен к этому посту

то, что я пробовал вместо .......... comments = PostComment.objects.filter(post=allPost)

1.....comments = PostComment.objects.filter(post__in=allPost)

2.....comments = PostComment.objects.get(post__in=allPost)

3.....comments = PostComment.objects.get(post=allPost)

4.....comments = PostComment.objects.filter(post_id__in=allPost)

5.....comments = PostComment.objects.filter(post__id__in=allPost)

6.....comments = PostComment.objects.filter(post_id=allPost)

но ни один из них не работает............................................ пожалуйста, помогите мне

что мне делать в этом случае

views.py....

def index(request):

if request.user.is_authenticated:

    allPost = Post.objects.all().order_by('-created_on').filter(creater = request.user)

    allBlog = Blogpost.objects.all()

    comments = PostComment.objects.filter(post=allPost)

    context = {'allPost' : allPost, 'allBlog' : allBlog, 'comments' : comments}

    return render(request, 'index.html', context)

else:
    return render(request, "signoption.html")

models.py....

 class Post(models.Model):

    sno = models.AutoField(primary_key=True)

    caption = models.CharField(max_length=500)

    hashtag = models.CharField(max_length=500)

    image = models.ImageField(upload_to='socialmedia/images', default="")

    created_on = models.DateTimeField(default=timezone.now)

    creater = models.ForeignKey(User, on_delete=models.CASCADE)


    def __str__(self):
        return str(self.sno) + '.....Post By.....' + str(self.creater)

class PostComment(models.Model):

    sno = models.AutoField(primary_key=True)

    comment = models.TextField()

    user = models.ForeignKey(User, on_delete=models.CASCADE)

    post = models.ForeignKey(Post, on_delete=models.CASCADE)

    parent = models.ForeignKey('self', on_delete=models.CASCADE, null=True)

    created_on = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return str(self.sno) + '.....comment By.....' + str(self.user)

index.html....

{% for comment in comments %}

<div class="comment">

    <div class="comment-user">

        <div class="comment-usr-dp">

            <img src="{%static 'img/profile/profile.png'%}" alt="">

        </div>

    </div>

    <div class="comments-usr-usrname">

        <b><h1>{{comment.user.username}}</h1></b>

    </div>

    <div class="comment-text">

        <h1>{{comment.comment}}</h1>

    </div>

    <div class="comment-time">

        <h1>{{comment.created_on | naturaltime}}</h1>

    </div>
</div>
{%endfor%}

как я вижу в этом вопросе Значение QuerySet для точного поиска должно быть ограничено одним результатом с использованием нарезки. Ошибка фильтра проблема есть

comments = PostComment.objects.filter(post=allPost)

поэтому я думаю, что вам нужно писать именно так

comments = PostComment.objects.filter(post__in=allPost)
Вернуться на верх