栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Django——数据库查询

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Django——数据库查询

>>> cong = User.objects.get(pk=1)
>>> cong

>>> cong.diary.values('content')

查看cong的日记。
这里cong.diary是因为定义了related_name=‘diary’

class Diary(models.Model):
    user = models.ForeignKey(User, related_name='diary', on_delete=models.SET_NULL, blank=True, null=True)
    content = models.TextField()
    create_time = models.IntegerField()

所以,user.diary就相当于Diary。

>>> users = User.objects.all()
>>> users
, ]>

>>> users = list(User.objects.all())
>>> users
[, ]
>>> users = User.objects.filter(username='cong', id=1)
>>> users
]>

>>> users = User.objects.filter(username='cong', id=1).exclude(id=1)
>>> users

过滤年龄大于20的user

>>> users = User.objects.all().exclude(age__gt=20)
>>> users
]>

模糊查找

>>> users =User.objects.filter(username__contains='on')
>>> users
]>
>>> groups = cong.group
>>> groups
.ManyRelatedManager object at 0x000001C83610EA60>
>>> groups.values('name')

>>> groups.first()

>>> groups.last()

原生SQL方式:

>>> users = User.objects.raw('select * from app_user')
>>> users

>>> list(users)
[, ]

反向查询:反向查询是 related_name__id,两个下划线id

>>> user = User.objects.filter(diary__id=3)
>>> user

聚合方法

>>> from django.db.models import Avg, Count, Sum

>>> user = User.objects.all().aggregate(Avg('age'))
>>> user
{'age__avg': 24.0}

通过user.related name, 然后在 .values (‘字段’) ,括号里是字段名,一定要用引号引起来。

>>> user = User.objects.get(pk=1)
>>> user.diary.values('content')

ps:

>>> user = User.objects.filter(diary__id=1)
>>> user
]>
>>> content = user.diary.values('content')
Traceback (most recent call last):
  File "", line 1, in 
AttributeError: 'QuerySet' object has no attribute 'diary'

>>> user = User.objects.get(pk=1)
>>> user.diary.values('content')

>>> user

这里 第一种方法报错了,因为他返回的是queryset,第二种可以。
注意一下吧,就是要get一个User的对象,才可以使用related name.values的方法。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/488432.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号