Django ';QuerySet';对象没有属性';pk',如何从home view获取帖子的Id?

Django ';QuerySet';对象没有属性';pk',如何从home view获取帖子的Id?,django,django-models,django-views,django-forms,django-templates,Django,Django Models,Django Views,Django Forms,Django Templates,如何在home view中获取对象的pk,我尝试使用帖子创建个人博客,并且这些帖子包含评论,我尝试获取帖子pk以获取与此帖子相关的评论,但我失败了 首先,我试图通过将其添加到def home\u view(request,pk)中来获取pk,但主页www.mywebsite.com中的此模板意味着,据我所知,我无法将pk传递到url,因此我失败了 我的问题是如何从主视图中获取帖子的Id? 我的家乡景色 post = [] for u in users: p = Account.objects

如何在home view中获取对象的pk,我尝试使用帖子创建个人博客,并且这些帖子包含评论,我尝试获取帖子pk以获取与此帖子相关的评论,但我失败了 首先,我试图通过将其添加到
def home\u view(request,pk)
中来获取pk,但主页
www.mywebsite.com
中的此模板意味着,据我所知,我无法将pk传递到url,因此我失败了

我的问题是如何从主视图中获取帖子的Id? 我的家乡景色

post = []
for u in users:
  p = Account.objects.get(username=u)
            posts = p.post_set.all()

post.append(posts)
  if len(video):  
 video = sorted(chain(*video), reverse=True, key=lambda video:         video.created_date)

# here I tried to get the pk
comma = Post.objects.all()
our_post = Post.objects.get(pk=comma.pk)
comment = PostCommentIDF.objects.filter(post=our_post)
我的后模特

class Post(models.Model):
 author = models.ForeignKey(Account, on_delete=models.CASCADE)
    article = models.TextField(null=True, blank=True)
    photo_article = models.ImageField(max_length=255, upload_to=get_poster_filepath)
    created_date = models.DateTimeField(auto_now_add=True)
我的评论模式

class PostCommentIDF(MPTTModel):

post = models.ForeignKey(Post, on_delete=models.CASCADE, related_name='pos_com')
parent = TreeForeignKey('self', on_delete=models.CASCADE, null=True, blank=True, related_name='post_children')
author = models.ForeignKey(Account, on_delete=models.CASCADE)
content = models.TextField()
created_date = models.DateTimeField(auto_now_add=True)
status = models.BooleanField(default=True)
主视图Url

path('', home_screen_view, name='home'),

真的不知道你的目标是什么让我试试


comma=Post.objects.all()
返回
QuerySet
。它类似于列表或数组。属性
pk
在该“数组”中的每个项目上,而不是在数组本身上

如果你有
QuerySet
(你的帖子列表),你可以在上面循环:


comma=Post.objects.all()#返回所有Post
对于逗号形式的帖子:#现在帖子是单帖子
我们的_post=post.objects.get(pk=post.pk)#现在您可以调用'pk',因为post是单个post,而不是QuerySet。。。不需要此行,因为您已经有post
comment=postcommentdf.objects.filter(post=post)#现在获取该帖子的评论
编辑: 如何在视图和模板中使用:

post_with_comments=[]
逗号=Post.objects.all()#返回所有Post
对于逗号形式的帖子:#现在帖子是单帖子
我们的_post=post.objects.get(pk=post.pk)#现在您可以调用'pk',因为post是单个post,而不是QuerySet。。。不需要此行,因为您已经有post
comment=postcommentdf.objects.filter(post=post)#现在获取该帖子的评论
附加({“post”:post,“comments”:comment})
上下文={“项”:用注释发布}
返回上下文
然后在模板中循环所有
post\u和\u注释

{items%]中的项的%
{{item.post}
{{item.comments.count}
{%endfor%}

comma=Post.objects.all()
返回
QuerySet
。它类似于列表或数组。属性
pk
在该“数组”中的每个项目上,而不是在数组本身上。@zelenyjan请随意将其作为答案发布。@zelenyjan是否有办法获取帖子项目pk并在注释中使用它,就像
comment=PostCommentIDF.objects.filter(post=post.pk)
您好,谢谢您的回答。例如,我尝试了这个方法来返回注释数,它通过这种方式返回0
{{comment.count}
尝试在
comment=PostCommentIDF.objects.filter(post=post)
之后添加
print(comment.count())
如果数据库中有任何注释,则至少有一篇文章会看到不同的计数,然后是0。从您的评论中无法判断0是否正常,这是有效的,但仅当for循环内的打印,但当for循环外的打印返回0时,我如何让它成为可能,因为我想将其传递到模板的上下文?谢谢你,我会认为这是被接受的。answer@Ahmed我更新了答案,包括模板样本谢谢,这是返回
“set”对象没有属性“\u mptt\u meta”
,但我认为这是与mptt注释模型相关的问题