如何在Django中获取域名url www.site.com中多个对象的pk
我试着建立一个博客,这个博客在主视图如何在Django中获取域名url www.site.com中多个对象的pk,django,django-models,django-views,django-forms,django-templates,Django,Django Models,Django Views,Django Forms,Django Templates,我试着建立一个博客,这个博客在主视图www.site.com中包含帖子,这些帖子有评论,现在我使用列表[]显示帖子,因为用户有能力跟踪内容,在这个列表中,我根据用户显示内容,现在我成功地展示了帖子,但这篇帖子包含的评论意味着我需要获得帖子的pk,但正如我在主页视图www.site.com中所说的,没有任何额外的URL,据我所知,这意味着我无法在def home\u屏幕视图中通过pk(请求,pk)因为此引发错误home\u screen\u view()缺少1个只需关键字的参数:“pk” 那么我的
www.site.com
中包含帖子,这些帖子有评论,现在我使用列表[]显示帖子,因为用户有能力跟踪内容,在这个列表中,我根据用户显示内容,现在我成功地展示了帖子,但这篇帖子包含的评论意味着我需要获得帖子的pk,但正如我在主页视图www.site.com
中所说的,没有任何额外的URL,据我所知,这意味着我无法在def home\u屏幕视图中通过pk(请求,pk)
因为此引发错误home\u screen\u view()缺少1个只需关键字的参数:“pk”
那么我的问题是如何在基本urlwww.site.com
我的看法
def home_screen_view(request, *args, **kwargs):
users = [user for user in profile.following.all()]
post = []
for u in users:
p = Account.objects.get(username=u)
posts = p.post_set.all()
post.append(posts)
my_posts = request.user.post_set.all()
post.append(my_posts)
if len(post):
post= sorted(chain(*post), reverse=True, key=lambda post: post.created_date)
posts = Post.objects.filter(pk=post.pk) # here I want to get the pk of the post in order to show the comments related this post
comment = PostCommentIDE.objects.filter(post=posts)
网址
path('', home_screen_view, name='home'),
我的后模特
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 PostCommentIDE(models.Model):
post = models.ForeignKey(Post, on_delete=models.CASCADE, related_name='ide_com')
author = models.ForeignKey(Account, on_delete=models.CASCADE)
content = models.TextField()
created_date = models.DateTimeField(auto_now_add=True)
帖子模板
{% for post in posts %}
...
#here I want to render the comments that related to spesific post
{% for comment in comments %}
{{ comments.content }}
{% endfor %}
...
{% endfor %}
我使用基于函数的视图从您的主屏幕视图可以删除
comment = PostCommentIDE.objects.filter(post=posts)
相反,您可以在模板中执行以下操作:
{% for comment in post.ide_com.all %}
{{ comments.content }}
{% endfor %}
说明:
您的评论模型
PostCommentIDE
与Post
具有外键关系。这使您能够获取帖子的相关评论。默认情况下,您可以使用post.postcommentide\u set.all
访问注释,但当您在该关系上定义了相关的\u name属性时,它将变成post.ide\u com.all
。在这里阅读更多信息:你不能在模板中做{%post.ide_com.all%}
?你能澄清一下这post.ide_com.all
come@Ahmed当然,我会把它加在这里answer@Ahmed查看我的编辑并给出解释