【问题标题】:Home page layout主页布局
【发布时间】: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 中调用一、二、三?

【问题讨论】:

  • 这没有意义,除非ModelOneModelTwo 之间存在关系。请发布您的实际模型,而不是假设案例。
  • 我现在说得更清楚了
  • 你能分享你的models.py吗?我想你想按帖子过滤所有评论?

标签: python django


【解决方案1】:

如果您希望每个已获得 cmets 批准的帖子,请执行

com = Comment.objects.filter(approved=True)
my_var = Post.objects.filter(comments__in=com)

【讨论】:

  • 它给了我一个 FieldError 无法将关键字“评论”解析到字段中
  • 尝试做Post.objects.filter(cmets__in=com),你的类Comment中的related_name参数意味着你必须这样调用它
  • 修正错字后仍然没有用,我想我必须重新表述我的整个问题。
  • 我已经重新测试了你的部分答案,但我的 home.html 有问题。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-14
  • 1970-01-01
  • 1970-01-01
  • 2010-12-28
  • 2014-01-14
  • 2014-06-11
相关资源
最近更新 更多