lybcyd 最近的时间轴更新
lybcyd

lybcyd

V2EX 第 98957 号会员,加入于 2015-02-20 17:19:31 +08:00
今日活跃度排名 14850
lybcyd 最近回复了
29 天前
回复了 ila 创建的主题 Django 请问 Django ORM 如何实现 left join?
@ila 这个写法用了好多 orm 的内部结构,有点舍近求远了,不是很建议。

我简单写了个小 demo ,你看看能不能参考一下。

首先是 model 定义,关联关系是在这里定义的。不知道你的完整表结构,我就简单列了语句里出现的字段,其余的你自己补充一下吧。接下来可以进行查询了。

<script src=".js"></script>

打印这个 queryset ,可以看到生成的语句,我这里用的是 sqlite:

SELECT "employees"."id", "employees"."fullName1", "employees"."workEmail" FROM "employees" LEFT OUTER JOIN "id_mapping" ON ("employees"."id" = "id_mapping"."user_id") WHERE ("employees"."id" LIKE %Steven% ESCAPE '\' OR "employees"."fullName1" LIKE %Steven% ESCAPE '\' OR "employees"."workEmail" LIKE %Steven% ESCAPE '\' OR "id_mapping"."new_id" LIKE %Steven% ESCAPE '\')
30 天前
回复了 ila 创建的主题 Django 请问 Django ORM 如何实现 left join?
django orm 和其他 orm 都不太一样,是不能直接使用 query builder 进行 join 的。后面的 group by 也不方便直接用,不过你这个语句 id 应该是 unique 的,又是非标准的 full group 语法,先忽略掉吧。

像这个语句,如果要尽可能使用 django orm 的推荐做法,应该建一个 IdMapping 的 model ,然后建立一对多或者一对一的关联关系(看你的业务逻辑)。这个关联关系可以直接当做一个 field 获取,也可以在条件里进行 lookup 。假设在 Employee model 里,这个关联关系叫做 mapping ,就可以直接使用 Employee.objects.filter(Q(id__icontains='Steven')|Q(fullName1__icontains='Steven')|Q(workEmail__icontains='Steven')|Q(mapping__new_id__icontains='Steven')).values('id','fullName1', 'workEmail')
来进行查询了。

看看官方文档是怎么定义的:

https://docs.djangoproject.com/zh-hans/4.0/topics/db/models/#many-to-one-relationships

https://docs.djangoproject.com/zh-hans/4.0/topics/db/queries/#lookups-that-span-relationships-1

如果 join 关系实在太复杂,用自带的很难拼接,那就干脆 raw 来实现。ORM 不是万能的,拼接一大堆复杂的条件还不如直接 sql 语句搞定。
代码简单符合直觉啊。类型注解是提示,不是强类型。
laravel 吗?用 laravel valet 吧,可以自动 serve 一个文件夹下所有项目,并配置好 project.test 域名
package.json 是 npm ,yarn 等 node 系包管理器使用的文件,对后端没什么意义。唯一可能有意义的就是用 node 开发后端,那也需要 package.json ,但这个也称不上是前端 package.json 了。
47 天前
回复了 unt 创建的主题 程序员 求问大佬们 UI 框架技术选型
就 antd 呗,又没有特殊的定制需求,怎么方便怎么来,antd 使用广泛遇到问题资料也多
看起来是 N+1 问题,按照 JPA 规范使用 EntityGraph 解决。
60 天前
回复了 brader 创建的主题 程序员 laravel 接口响应输出奇怪的东西
排查一下是不是中间件的问题
69 天前
回复了 huigeer 创建的主题 PHP Info from https://repo.packagist.org: #StandWithUkraine
@qa2080639 Composer 的态度和 PHP 官方态度也没什么关系吧?中国这么多用 Go 的,也不会遵循 Google 的态度吧?
69 天前
回复了 huigeer 创建的主题 PHP Info from https://repo.packagist.org: #StandWithUkraine
官方都表态了,指的是谁,不会是中国官方吧?难道外国开源库都要遵循中国官方的态度?

作又是啥意思?支持乌克兰就是作,要是他支持俄罗斯那还是作吗?

总说开源不要掺杂政治,有些时候中立强行按头不让人家表达观点其实也是一种政治态度

归根结底,人家的库愿意怎么表达都是自己的事,不喜欢的人可以不用。可别又是官方又是作的,自我意识别太过剩了
关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2950 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 11ms · UTC 12:54 · PVG 20:54 · LAX 05:54 · JFK 08:54
Developed with CodeLauncher
♥ Do have faith in what you're doing.