Django QuerySet对象,all()方法

all()方法

在Django中,all()方法是QuerySet对象的一个方法,用于获取模型的所有实例。

当你调用ModelName.objects.all()时,Django会生成一个SQL查询,从数据库中获取该模型的所有记录,并返回一个QuerySet对象,这个对象包含了所有的模型实例。

相当于SQL语句中如:

复制代码
select * from table_name

例如,如果你有一个Post模型,你可以这样获取所有的帖子:

复制代码
from .models import Post
posts = Post.objects.all()

在这个例子中,posts是一个QuerySet对象,你可以像操作列表一样操作它,例如,你可以遍历它,获取它的长度,或者对它进行切片等操作。

需要注意的是,all()方法并不会立即从数据库中获取所有的记录,而是在你第一次访问QuerySet对象时才从数据库中获取记录。

这是Django的延迟查询机制,可以避免不必要的数据库查询,提高性能。

1,创建应用

Test/app11

复制代码
python manage.py startapp app11

2,注册应用

Test/Test/settings.py

3,添加应用路由

复制代码
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    # ...
    path('app11/', include('app11.urls')),
]

4,应用添加模型

Test/app11/models.py

复制代码
from django.db import models

class Post(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    pub_date = models.DateTimeField('date published')

5,应用创建和执行迁移

复制代码
# 创建迁移文件
python manage.py makemigrations app11

# 执行迁移文件
python manage.py migrate app11

6,应用添加视图

Test/app11/views.py

复制代码
from django.shortcuts import render
from .models import Post

def index(request):
    posts = Post.objects.all()
    return render(request, '11/index.html', {'posts': posts})

7,应用添加html代码

Test/templates/11/index.html

复制代码
<!-- posts/index.html -->

<h1>我的博客</h1>
{% for post in posts %}

<h2>{{ post.title }}</h2>
<h4>{{ post.content }}</h4>

<br/>
{% endfor %}

8,应用添加路由

Test/app11/urls.py

复制代码
from django.urls import path
from . import views

urlpatterns = [
    path('index/', views.index, name='index'),
]

9,应用添加数据

Test/create_posts.py

复制代码
import os
import django

# 设置Django环境,需要指定settings模块
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Test.settings")
django.setup()

from app11.models import Post
from datetime import datetime

# 创建并保存Post对象
post = Post(title="张国荣", content="(英语:Leslie Cheung Kwok Wing,1956年9月12日---2003年4月1日),本名张发宗,香港男歌手、演员、词曲作家[3],并曾经担任电影配乐、排舞、音乐视频导演、艺术总监和电影导演。", pub_date=datetime.now())
post.save()

# 或者使用objects.create()方法
Post.objects.create(title="梅艳芳", content="英语:Anita Mui Yim-fong;1963年10月10日---2003年12月30日),香港女歌手、演员、社会活动家,有"乐坛大姐大"之称。她的形象百变,获奖无数,是香港粤语流行乐坛辉煌鼎盛期的标志性人物,也是香港演艺界第一位同时取得"歌后"及"影后"级殊荣的女艺人。", pub_date=datetime.now())

10,访问页面

http://127.0.0.1:8000/app11/index/

相关推荐
invicinble5 小时前
这里对java的知识体系做一个全域的介绍
java·开发语言·python
小码哥_常5 小时前
MyBatis-Plus:让数据库操作飞起来的神器
后端
2301_811274316 小时前
基于SpringBoot的智能家居管理系统
spring boot·后端·智能家居
AI人工智能+电脑小能手6 小时前
【大白话说Java面试题】【Java基础篇】第15题:JDK1.7中HashMap扩容为什么会发生死循环?如何解决
java·开发语言·数据结构·后端·面试·哈希算法
舒一笑6 小时前
我把设备指纹生成逻辑拆开了:它到底凭什么区分不同设备?
后端·程序员·掘金技术征文
m0_674294646 小时前
如何编写SQL存储过程性能对比_记录执行时间评估优化效果
jvm·数据库·python
运气好好的6 小时前
怎样开启phpMyAdmin的操作审计日志_记录每条执行的SQL
jvm·数据库·python
Nicander6 小时前
多数据源下@transcation事务踩坑
java·后端
郑州光合科技余经理6 小时前
同城O2O海外版二次开发实战:从支付网关到配送算法
开发语言·前端·后端·算法·架构·uni-app·php
2401_871492857 小时前
Layui如何修改Layui默认的UI主题颜色(换肤功能实现)
jvm·数据库·python