V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
ashin
V2EX  ›  Python

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

  •  
  •   ashin ·
    axiaoxin · 2016-07-28 11:17:06 +08:00 · 5104 次点击
    这是一个创建于 2828 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    如果数据其他问题,请用找 DBA 调整表结构,让 DBA 来导数据等等。
    moosoome
        7
    moosoome  
       2016-07-28 14:48:08 +08:00
    自己做的小玩意一直用的 Foreignkey ,被你这么一说有点方。。。
    wibile
        8
    wibile  
       2016-07-28 16:43:12 +08:00
    如果不用 foreign key ,你用 ORM 的时候会很痛苦。。。。然后就会用各种 raw sql ,不好取舍啊
    ashin
        9
    ashin  
    OP
       2016-07-28 19:36:59 +08:00
    @wibile 我觉得应该不会有什么痛苦,只是不再使用外键查询的语法,直接使用 model 的 filter 可以解决
    chaleaoch
        10
    chaleaoch  
       2016-07-28 20:33:09 +08:00
    @happywowwow 请问可以在详细解释以下吗?搜了一下没搜到。
    wibile
        11
    wibile  
       2016-07-28 21:16:08 +08:00
    @ashin 多表关联比较复杂的时候,就不是 filter 能满足的了。有外键和没外键写代码效率差别挺大的, ORM 的优势。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3232 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 12:41 · PVG 20:41 · LAX 05:41 · JFK 08:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.