11 年前的一個 ticket,到現在還沒解決。。。

2017-01-13 23:06:09 +08:00
 013231
https://code.djangoproject.com/ticket/897

Bi-Directional ManyToMany in Admin
4944 次点击
所在节点    Django
14 条回复
julyclyde
2017-01-14 00:12:29 +08:00
不是为 django 开脱
数据库里如果出现 many to many 基本上就是设计错误
013231
2017-01-14 00:25:15 +08:00
@julyclyde 为什么?
shoaly
2017-01-14 00:45:27 +08:00
文章 article_id , 标记 tag_id, 一篇文章可以多个 tag_id, 同一个 tag_id 也可以对应多个 article_id, m:m ?
zonghua
2017-01-14 00:48:54 +08:00
@013231 查询吃力
latyas
2017-01-14 01:02:05 +08:00
manytomany 有啥错?
django 也是通过中间表来做映射的,也就是多个 JOIN 罢了,除非有强性能要求不允许数据库中出现 JOIN 或者限制 JOIN 次数。

而且这个和 M2M 没关系吧 这是问 django admin 的问题
013231
2017-01-14 01:34:31 +08:00
@zonghua 多表联合查询是可能有性能问题, 但不能说这是设计错误啊.
013231
2017-01-14 01:39:23 +08:00
@latyas 没错, 这就是 django.contrib.admin 的问题, 和数据库结构没关系.
julyclyde
2017-01-14 02:16:19 +08:00
@013231 正确的做法是额外有个 m*n 表,而不是直接在表上做 many to many
Kilerd
2017-01-14 09:15:37 +08:00
由此证明了 flask 的优越性 😋😋😋
chaleaoch
2017-01-14 21:36:09 +08:00
@julyclyde 区别是?
kankana
2017-01-15 09:45:50 +08:00
是说需要 pivot 表吧
qwer1234asdf
2017-01-15 13:16:25 +08:00
可以参考下 cakephp 模型的设计, 1.2 版的,新版本的不知道,没用过……
其实,这不应该是框架的问题, flask 也会出现 many to many 的情形,可以弄一个中间表
msg7086
2017-01-16 06:24:11 +08:00
@julyclyde 你这话挺有问题的。
Many to many 的标准做法就是加一张关联表。
「数据库里如果出现 many to many 基本上就是设计错误」是什么鬼。
dcoder
2018-07-21 06:16:33 +08:00
@julyclyde

「数据库里如果出现 many to many 基本上就是设计错误」是什么鬼。+1

"正确的做法是额外有个 m*n 表,而不是直接在表上做 many to many" 这又是什么意思?
Django 的 many to many 本身就会建立一个额外的表来存关系的呀?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/334484

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX