在查询中使用过滤器和 order_by

Using filter and order_by in a query

我想创建一个简单的博客,在索引页中按类别过滤显示 5 个新帖子。我读了另一个关于此的问题,但是当我尝试时它根本不起作用

list_blog_canada = Blog.objects.filter(category_id=1).order_by('publish')

我想知道这没有任何问题,问题出在我的模型上?什么的

models.py

class Category(models.Model):
    title = models.CharField(max_length=100)
    slug = models.SlugField(max_length=100, unique=True)

    def __str__(self):
        return self.title

class Blog(models.Model):
    title = models.CharField(max_length=100)
    slug = models.SlugField(max_length=100, unique=True)
    content = models.TextField()
    publish = models.DateTimeField(auto_now=True)
    category = models.ForeignKey(Category)

index.html

{% if listblogca %}
                        {% for entry in listblogca|slice:':5' %}
                            <ul><li><a href="/baiviet/{{ entry.slug }}/">{{ entry.title|truncatechars:25 }}</a></li></ul>
                        {% endfor %}
                        {% else %}
                            <h4>THERE ARE NO POSTS</h4>
                {% endif %}

感谢您的阅读。我希望我能尽快得到你的帮助

如果您想获取最新的帖子,那么您需要在 order_by 方法中的字段名称中添加 - 符号:

list_blog_canada = Blog.objects.filter(category__id=1).order_by('-publish')

ascending/descendig 订单的文档是 here

博客对象似乎没有 category_id 字段。

这里有一些文档供查询 https://docs.djangoproject.com/en/dev/topics/db/queries/#lookups-that-span-relationships