上篇说了orm中内置了一个object对象,所有的查询要先通过object,之后的筛选过滤等方法中,常用的有filter和values。今天不扯原理,只讲使用方法。
我们都知道orm本质是将SQL转化为类属性操作,也就是说代码中的方法是跟SQL是可以对应上的。
from django.db import models
class Premission(models.Model):
title = models.CharField(verbose_name='权限名称',max_length=32)
url = models.CharField(verbose_name='权限url',max_length=128)
def __str__(self):
return self.url
class Role(models.Model):
name = models.CharField(verbose_name='角色名称',max_length=32)
premission = models.ManyToManyField(verbose_name='角色权限',to=Premission)
def __str__(self):
return self.name
class User(models.Model):
user = models.CharField(verbose_name='用户名',max_length=32,blank=True,null=True)
password = models.CharField(verbose_name='用户密码',max_length=32,blank=True,null=True)
role = models.ManyToManyField(verbose_name='用户角色',to=Role)
def __str__(self):
return self.user
复制
filter()
相当于sql中的WHERE,区别是sql得到确切的数据,orm得到数据的映射。不完全准确,勿喷。
orm:
models.User.objects.filter(user='luka')
sql:
SELECT * FROM User WHERE user= 'luka';
复制
values()
一种相当于sql中的WHERE和from之间,另一种情况可通过双下划线实现跨表查询(例子3)
例子1:
orm:
models.User.objects.values()
SQL:
SELECT * FROM User ;
例子2:
orm:
models.User.objects.values('password')
SQL:
SELECT password FROM User ;
例子2:
orm:
models.User.objects.filter(user='luka').first().values('role__name')
SQL:
SELECT Role.name FROM Role,(SELECT * FROM User WHERE user = 'luka') AS ret WHERE Role.role_id=ret.user_id;
复制
filter()和values()的区别在于,filter返回对象,而values返回字典。一般情况下,我们要的最终查询结果是字典这样确切的数据,而不是一个确切结果的映射。
the end
张杰挺好的,不知道为什么这么多人喷他。
“
这战场千百热血战士
一路向前飞驰
捍卫世界的勇士
”
文章转载自大碗岛星期天下午的梦,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
2025年4月中国数据库流行度排行榜:OB高分复登顶,崖山稳驭撼十强
墨天轮编辑部
2512次阅读
2025-04-09 15:33:27
数据库国产化替代深化:DBA的机遇与挑战
代晓磊
1171次阅读
2025-04-27 16:53:22
2025年3月国产数据库中标情况一览:TDSQL大单622万、GaussDB大单581万……
通讯员
850次阅读
2025-04-10 15:35:48
2025年4月国产数据库中标情况一览:4个千万元级项目,GaussDB与OceanBase大放异彩!
通讯员
661次阅读
2025-04-30 15:24:06
数据库,没有关税却有壁垒
多明戈教你玩狼人杀
581次阅读
2025-04-11 09:38:42
天津市政府数据库框采结果公布,7家数据库产品入选!
通讯员
562次阅读
2025-04-10 12:32:35
国产数据库需要扩大场景覆盖面才能在竞争中更有优势
白鳝的洞穴
543次阅读
2025-04-14 09:40:20
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
477次阅读
2025-04-17 17:02:24
一页概览:Oracle GoldenGate
甲骨文云技术
460次阅读
2025-04-30 12:17:56
GoldenDB数据库v7.2焕新发布,助力全行业数据库平滑替代
GoldenDB分布式数据库
453次阅读
2025-04-30 12:17:50