立即登录

注册账号

联系我们

2022年4月21日 16:20

4.2 模型_常用查询

导入模型:

from blog.models import Article

查询所有

Article.objects.all()

查询结果是列表

查询单个

Article.objects.get(id=1)

对象 对象.属性 特殊情况 对象.属性的结果是一个外键(另一个对象) 对象.属性.属性

get会遇到的问题:

  • get时没有找到会报错
  • get找到了多个也报错

first()

p = Article.objects.first()

id最大的

last()

p = Article.objects.last()

id最小的

latest(某个属性)最新的

查询某一个字段找出最后的。如果日期:最新的, 如果数字:最大的。

p = Article.objects.latest('id')

earliest(某个属性)最早的

order_by(某个属性)

对结果排序,正序

order_by(-某个属性)

对结果排序,倒序

PS:order_by要放到最后

如下几个问题:

  1. 查询结果是列表还是对象?

  2.  all() filter()  QuerySet
     get()  Object
  3. 如果是对象,通过对象.打印出属性

  4. 属性是否是一个外键,【对象.属性.属性】来打印值

查询单个的时候,如果要匹配一个外键,这个外键必须是一个对象

Chengji.objects.get(xuesheng='马源') XXXX错误的
正确1:
先查询出马源(这个对象)my
my = Xuesheng.objects.get(name='马源')
Chengji.objects.filter(xuesheng=my)
正确2:
Chengji.objects.filter(xuesheng__name='马源')

基本查询

Article.objects.filter(id__lt=3)
Article.objects.filter(id__gt=1)
Article.objects.filter(id__lte=3)
Article.objects.filter(id__gte=1)

其他查询

<!--排序-->
order_by('按什么排序')  -倒序
p = Article.objects.order_by('title')
Article.objects.filter(publish__month__lte=3)
Article.objects.filter(publish__year='2022')


Catalog.objects.filter(code__exact="public");   
Catalog.objects.filter(code__iexact="PUBLIC");  # 大小写不敏感
articles = articles.annotate(coms=Count('art_comments')).order_by('coms')

留言

给我留言