django 的 model 定义中该不该使用 foreignkey

2016-07-28 11:17:06 +08:00
 ashin

现在的生产中都不允许使用外键、 join 之类的。 django 里面好像都在用 foreignkey ,该避免使用吗?

5154 次点击
所在节点    Python
11 条回复
peter999
2016-07-28 11:19:02 +08:00
不该用就不会有这功能了
oclock
2016-07-28 11:27:05 +08:00
如果是正经关系库的设计,问 DBA ,问架构师
如果是大宽表,随意
ericls
2016-07-28 11:47:22 +08:00
为什么生产环境不能使用 foreignkey ?
holyghost
2016-07-28 11:54:23 +08:00
反正我们的生产环境不允许使用外键,用程序去保证一致性。
happywowwow
2016-07-28 12:39:10 +08:00
记得 django 是可以你 model 里定义 foreignkey 但是数据库不用外键.
等你用到 foreignkey 的 model 的时候 他是 lazy 加载的
pixstone
2016-07-28 13:41:05 +08:00
这个交给 DBA 更合适

有些人认为外键影响性能,有些人是因为手动插入数据的时候 很痛苦。有些人说插入数据的时候 会遇到 因为外键限制插入不了数据的情况。

如果是性能,不太清楚你的什么业务需要数据库级别的性能压榨,有性能问题先打产品狗卡掉不合理的需求先,然后砍架构,然后才是程序猴子 和 DBA

如果数据其他问题,请用找 DBA 调整表结构,让 DBA 来导数据等等。
moosoome
2016-07-28 14:48:08 +08:00
自己做的小玩意一直用的 Foreignkey ,被你这么一说有点方。。。
wibile
2016-07-28 16:43:12 +08:00
如果不用 foreign key ,你用 ORM 的时候会很痛苦。。。。然后就会用各种 raw sql ,不好取舍啊
ashin
2016-07-28 19:36:59 +08:00
@wibile 我觉得应该不会有什么痛苦,只是不再使用外键查询的语法,直接使用 model 的 filter 可以解决
chaleaoch
2016-07-28 20:33:09 +08:00
@happywowwow 请问可以在详细解释以下吗?搜了一下没搜到。
wibile
2016-07-28 21:16:08 +08:00
@ashin 多表关联比较复杂的时候,就不是 filter 能满足的了。有外键和没外键写代码效率差别挺大的, ORM 的优势。。。

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

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

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

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

© 2021 V2EX