首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何过滤Django BooleanFields并在模板中显示结果

问如何过滤Django BooleanFields并在模板中显示结果
EN

Stack Overflow用户
提问于 2021-01-25 20:24:18
回答 1查看 30关注 0票数 0

对于Python/Django来说是全新的,并且遇到了困难,试图弄清楚如何只在同一个模板的某些部分显示标记为True的帖子。

就像。我有一个博客,用户可以发布文章,但是我希望使用Django BooleanField标记为science_post的帖子与其他博客文章分开显示。

,这是我的邮政模型:

代码语言:javascript
复制
class Post(models.Model):
    title = models.CharField(max_length=31)
    content = models.TextField()
    thumbnail = models.ImageField()
    picture_description = models.CharField(max_length=100, default=True)
    displayed_author = models.CharField(max_length=25, default=True)
    shortquote = models.TextField()
    reference_title = models.ManyToManyField(References)
    publish_date = models.DateTimeField(auto_now_add=True)
    last_updated = models.DateTimeField(auto_now=True)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    slug = models.SlugField()
    science_post = models.BooleanField(default=False)

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse("detail", kwargs={
            'slug': self.slug
        })

    def get_love_url(self):
        return reverse("love", kwargs={
            'slug': self.slug
        })

    @property
    def comments(self):
        return self.comment_set.all()

    @property
    def get_comment_count(self):
        return self.comment_set.all().count()

    @property
    def get_view_count(self):
        return self.postview_set.all().count()

    @property
    def get_love_count(self):
        return self.love_set.all().count()

我的想法是简单地过滤掉模板中标记为science_post的帖子,使用的是

代码语言:javascript
复制
{% if science_post %}
SHOW SCIENCE POST CONTENT HERE
{% endif %}

...But这个什么也不返回。任何帮助或一点正确的方向,这将是伟大的。如果需要更多的信息,请告诉我。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2021-01-25 20:31:38

为了实现两个独立的posts显示,您应该在后端使用两个单独的查询,而不是在前端使用if-语句来分隔它们。

尝试将两个QuerySets传递给模板,使用两个单独的查询过滤不同类型的帖子:

代码语言:javascript
复制
...
science = Post.objects.filter(science_post=True)
non_science = Post.objects.filter(science_post=False)
...

然后将它们分别呈现在模板中:

代码语言:javascript
复制
...
{% for post in science_post %}
SHOW SCIENCE POST CONTENT HERE
{% endfor %}
...
{% for post in non_science %}
SHOW NON-SCIENCE POST CONTENT HERE
{% endfor %}
...
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65891942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档