django - 获取当前帖子的类别
问题描述
所以正如标题所说,我需要获取当前帖子的类别以在“相关帖子”部分中使用它,更准确地说是放入什么cat_posts = Post.objects.filter(Category=????)
(不要介意评论变量,因为我从这篇文章中删除了我的 PostView 的一部分)
这是我的代码
视图.py
def PostView(request, slug):
template_name = 'post-page.html'
post = get_object_or_404(Post, slug=slug)
comments = post.comments.filter(active=True)
cat_posts = Post.objects.filter(Category=Post.Category)
cat_posts = cat_posts.order_by('-Date')[:3}
return render(request, template_name, {'post': post,
'cat_posts':cat_posts})
模型.py
class Category(models.Model):
name = models.CharField(max_length=100)
def __str__(self):
return str(self.name)
class Post(models.Model):
title = models.CharField(max_length=120)
Category = models.CharField(max_length=120, default='None')
Thumbnail = models.ImageField(null=True, blank=True, upload_to="images/")
Text = RichTextField(blank=False, null=True)
slug = models.SlugField(max_length=200, unique=True)
author = models.ForeignKey(User, on_delete=models.CASCADE)
Overview = models.CharField(max_length=400)
Date = models.DateTimeField(auto_now_add=True)
main_story = models.BooleanField(default=False)
def __str__(self):
return str(self.title)
def get_absolute_url(self):
# return reverse('about', args=(str(self.id)))
return reverse('home')
解决方案
您可以使用post.Category
(所以post
*对象,而不是类)获得它:Post
def PostView(request, slug):
template_name = 'post-page.html'
post = get_object_or_404(Post, slug=slug)
comments = post.comments.filter(active=True)
cat_posts = Post.objects.filter(
Category=post.Category
).order_by('-Date')[:3]
return render(
request,
template_name,
{'post': post, 'cat_posts':cat_posts}
)
然而,使用ForeignKey
[Django-doc]比使用Category
a更好CharField
:如果您稍后更改类别的名称,那么您的帖子不再指向有效的类别。
注意:通常 Django 模型中的字段名称是用 snake_case 编写的,而不是PerlCase,所以它应该是:
category
而不是.Category
推荐阅读
- java - 有没有办法用 java applet mousedown 布尔事件替换扫描仪?
- wicket - Handling simultaneous action
- python-3.x - 熊猫并将列和数据添加到表中
- android - DialogFragment Bundle putSerializable:有时会给出 NotSerializableException
- https - 使用 https 将外部域转发到 GCP 实例
- swift - 如何使用 Swift 以编程方式让 Mac 进入睡眠状态
- javascript - 让 div 留在视图内
- c# - RequestLocalizationOptions 不包含 ApplyCurrentCultureToResponseHeaders 的定义
- excel - 将特殊 Excel 表格粘贴到幻灯片占位符 PowerPoint VBA 中
- php - 实现 Ajax 以根据单选按钮值加载 HTML