【发布时间】:2018-05-07 07:38:41
【问题描述】:
我正在使用 Django 创建一个博客网站。我想将单个 Post 中的 cmets 数量(我有一个可以调用的整个帖子字典)作为 int 并在以下 def 中使用它:
def top_three(request)
first = -1
second = -1
third = -1
com = Comment.objects.filter(approved_comment)
posts = Post.objects.filter(comments__in=com)
for post in posts:
if len(posts) >= 3:
postvar = len(com)
if postvar > first:
first = postvar
one = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
elif postvar > second:
second = postvar
two = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
elif postvar > third:
third = postvar
three = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
else:
return render(request, 'blog/home.html')
return render(request, 'blog/home.html', {
'one': one,
'two': two,
'three': three,
})
假设我已经导入了所有需要导入的东西
Comment 模型与 Post 模型直接相关,没有相关帖子的人不能发表评论。我的模型是:
class Post(models.Model):
author = models.ForeignKey('auth.User', on_delete=models.CASCADE)
url = models.TextField()
title = models.CharField(max_length=200)
discription = models.TextField()
created_date = models.DateTimeField(
default=timezone.now)
published_date = models.DateTimeField(
blank=True, null=True)
def publish(self):
self.published_date = timezone.now()
self.save()
def __str__(self):
return self.title
def approved_comments(self):
return self.comments.filter(approved_comment=True)
和
class Comment(models.Model):
post = models.ForeignKey('blog.Post', related_name='comments')
author = models.CharField(max_length=200)
text = models.TextField()
created_date = models.DateTimeField(default=timezone.now)
approved_comment = models.BooleanField(default=False)
def approve(self):
self.approved_comment = True
self.save()
def __str__(self):
return self.text
你如何建议我在 blog/home.html 中调用一、二、三?
【问题讨论】:
-
这没有意义,除非
ModelOne和ModelTwo之间存在关系。请发布您的实际模型,而不是假设案例。 -
我现在说得更清楚了
-
你能分享你的models.py吗?我想你想按帖子过滤所有评论?