首页 > [django]请问为什么model没有 enum, tinyint 类型?我是否应该使用外键?

[django]请问为什么model没有 enum, tinyint 类型?我是否应该使用外键?

这几天刚从php转过来,习惯了 lnmp 组合, 所以很好奇为什么 django 没有支持 mysql 的 enum, tinyint 类型,我知道有 choice ,但我的意思是我没看到 models.EnumField 这样或类似的类型。

我是应该只考虑 Mysql 的情况使用它们呢? 还是说在 python 的生态中经常使用其他的数据库,所以应该优先考虑兼容性?

另外,我以前的所学总是强调不要使用外键,减轻数据库的负担。

但是 django 一上来就必须通过外键来关联 model ,所以我想问问大家一般怎么做的?

最后还有一个问题是,请问大家是如何部署线上环境的?文档上只写了 apache , 我觉得实践中应该不会真的这么做吧,那么各位感觉的最佳实践是什么?

呼~~能看完这么长的问题,不管怎么说也谢谢你了 :D


部署的话可以看看我写过的一篇博客Ubuntu下部署django应用,亲自动手跑过,基本是生产环境标准方案,Nginx+Mysql+supervisor(+virtualenv)。


很少有人能在编程时这么细致地思考了。手机打,有错请告知。


django 作为一个 web framework,首先考虑的肯定是兼容性。因此像 fields 这种东西,它能做的只是将各家数据库共有字段类型提取出来。对于某家特有的,它为你提供扩展点,你可以自己实现。


不像 php 如此依恋 mysql,在 python 生态中各种数据库都在被使用。因领域而别


个人反对那些盲目反对外键的言论。

不用外键你如何表示复杂的表关系?自己存 id 自己处理?既然是一样的活,数据库干的肯定比你干的更好,更快。这便是外键存在的理由,存在即合理。

在没遇到瓶颈时,过早的优化都是耍流氓。为了榨干一点微不足道的性能而损失简易性,我认为不值,我想你的老板也认为不值。比起支付加班费,买好机器来得更直接。

因此,项目不大时,尽管用外键。真的遇到瓶颈了,再来谈优化。


关于物理机器部署我没试过,我都是托在新浪云上的。不过有一点: 裸跑 runserver 是不行的,一般结合 apache 或 nginx 使用。可适当使用 gevent 提高性能

【热门文章】
【热门文章】