Python 从Django视图中的特定论坛类别获取线程
这是我当前的代码Python 从Django视图中的特定论坛类别获取线程,python,django,Python,Django,这是我当前的代码 类主题视图(ListView): 型号=螺纹 模板名称='forum/topic.html' 上下文\对象\名称='threads' 分页单位=5 def get_queryset(自我): topic=get\u object\u或\u 404(topic,id=self.kwargs.get('pk')) 返回Thread.objects.order_by('-date_posted') 它应该只从特定的论坛主题获取线程,但它会获取数据库中的所有线程。我尝试了一些方法来修
类主题视图(ListView):
型号=螺纹
模板名称='forum/topic.html'
上下文\对象\名称='threads'
分页单位=5
def get_queryset(自我):
topic=get\u object\u或\u 404(topic,id=self.kwargs.get('pk'))
返回Thread.objects.order_by('-date_posted')
它应该只从特定的论坛主题获取线程,但它会获取数据库中的所有线程。我尝试了一些方法来修复它,但这些修复方法似乎都不起作用
编辑:模型
课程主题(models.Model):
title=models.CharField(最大长度=100)
slug=models.SlugField(默认值='test')
description=models.TextField()
icon=models.CharField(最大长度=25)
类线程(models.Model):
title=models.CharField(最大长度=60)
content=models.CharField(最大长度=255)
发布日期=models.DateTimeField(默认值=时区.now)
author=models.ForeignKey(用户,on_delete=models.CASCADE)
topic=models.ForeignKey(topic,on_delete=models.CASCADE)
pinted=models.BooleanField(默认值=False)
locked=models.BooleanField(默认值=False)
删失=models.BooleanField(默认值=False)
已删除=models.BooleanField(默认值=False)
post_ip=models.GenericIPAddressField()
def num_回复(自我):
返回最大值(0,self.post\u set.count()-1)
def最后回复(自我):
如果self.post_set.count():
返回self.post_set.order_by('-created')[0]
您需要根据给定主题进行筛选,因此:
class TopicView(ListView):
model = Thread
template_name = 'forum/topic.html'
context_object_name = 'threads'
paginate_by = 5
def get_queryset(self):
return Thread.objects.filter(
topic_id=self.kwargs['pk']
).order_by('-date_posted')
您必须向我们提供线程和主题模型,以充分回答您的问题-我们无法猜测您的实现relation@quqa123编辑并添加了帖子。谢谢!这似乎有效,但如果论坛主题不存在,现在不会返回错误404。@dripdrip:allow\u empty是第二部分。
class TopicView(ListView):
model = Thread
template_name = 'forum/topic.html'
context_object_name = 'threads'
paginate_by = 5
allow_empty = True # 404 if empty
def get_queryset(self):
return Thread.objects.filter(
topic_id=self.kwargs['pk']
).order_by('-date_posted')