如何在Django中自动查询?

我可以通过显式给出’Id’来检索数据,但我想自动检索前3个’Id’数据。请看看我下面的代码,帮帮我吧

这是models.py

class Post(models.Model):
    title = models.CharField(max_length=200, unique=True)
    def __str__(self):
        return self.title

这是admin.py

class PostAdmin(admin.ModelAdmin):
    list_display = ('id','title')
admin.site.register(Post, PostAdmin)

这是views.py

def index(request):
    post3 = get_object_or_404(Post, id=3)
    post2 = get_object_or_404(Post, id=2)
    post1 = get_object_or_404(Post, id=1)
    context = {
        "post3": post3,
        "post2": post2,
        "post1": post1,
    }
    return render(request, 'contents/index.html', context)

如你所见,在上面我给出了ID号,它工作得很好,但我希望它能自动检索顶部的ID。

这是我的模板

<h3>{{post3.title}}</h3>
<h3>{{post2.title}}</h3>
<h3>{{post1.title}}</h3>

解决方案:

你可以只使用切片的queryset(它会自动添加LIMIT到SQL查询)或采取索引指定的对象。

posts = Post.objects.all()[:3]  # 3 first objects
posts = Post.objects.order_by("-id")[:3]  # 3 last objects
post = Post.objects.last()  # last object
post = Post.objects.order_by("-id")[0]  # also last object, but it's better to use `last` in such case
post = Post.objects.order_by("-id")[1]  # pre-last object

把它传递给上下文。

context = {"posts": posts}

然后你可以在模板中处理这个queryset。

{% for post in posts %}
  <h3>{{ post.title }}</h3>
{% endfor %}

给TA打赏
共{{data.count}}人
人已打赏
未分类

Postgres中的锁何时释放

2022-10-22 19:59:44

未分类

Tomcat NioEndpoint - 运行套接字处理器时出错

2022-10-22 20:10:35

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索