gpt4 book ai didi

mysql - Django 特性

转载 作者:行者123 更新时间:2023-11-29 04:45:55 28 4
gpt4 key购买 nike

我最近开始将 Django 1.5.4 用于带有 MySQL 后端的 Web 应用程序。就在一开始,我遇到了某些限制,这让我想知道 Django 是否是继续前进的正确方法。

一些明显的缺点是:

  1. 缺少复合主键。 bug已开业8年。对于依赖大量多对多表以具有不必要的自动主键并使用 unique_together 属性的应用程序来说,这不是坏事吗?

    引用:
    - http://comments.gmane.org/gmane.comp.python.django.devel/37301
    - How to remove redundant ID field in auto-generated ManyToMany table in Django?
    - https://code.djangoproject.com/wiki/MultipleColumnPrimaryKeys#Multi-ColumnPrimaryKeysupport
    - https://code.djangoproject.com/ticket/373

  2. 一些简单的事情,比如在 SQL 模式中表达一个默认值。我知道他们的原因won't fix它,但它让生活更艰难。

    引用:
    - https://code.djangoproject.com/ticket/470

  3. 无法声明固定字符字段

    引用:
    - https://code.djangoproject.com/ticket/9349

    Downside (quoted from the above bug report) : In my particular application, changing from Django-autogenerated varchar fields to char fields dropped the size of the database from 550GB to 300GB. There are many cases when there really is fixed-length character data that needs stored.

  4. 主键无法取消签名(错误报告已经来回很久了)
    。这并不难实现。它使可用 ID 加倍。

    引用:
    - https://code.djangoproject.com/ticket/56

正如我所说,这只是一个开始。我遇到了一些缺点,让我觉得如果 Django 忽略了这些基本的东西,那么继续使用它是正确的框架吗?我想问 Django 社区充满了问题,这些问题需要 hack 来解决其他简单的问题,或者这些只是少数异常(exception)?

我正在考虑试用 Pyramid/Pylons Framework。任何帮助/建议将不胜感激。

更新:增加了 2 个

最佳答案

老实说,如果这些东西对您来说是障碍,请不要使用 Django。我是 Django 的坚定支持者,但如果您觉得它不能满足您的需求,您应该选择其他东西。

我必须要说的是,那些值得注视的东西很奇怪。我无法想象为什么中间 M2M 表上的额外主键字段会成为一个问题。 (但是请注意,复合字段(包括 PK)已成为今年代码之夏项目的主题,并且看起来已准备好合并 - 请参阅 https://groups.google.com/forum/#!topic/django-developers/CD7OrkJ63zc)

再一次,为什么在 SQL 级别缺少默认值“让生活变得更难”是很难理解的:如果你通过 Django 的 ORM 做所有事情,应用默认值的地方没有区别;另外,正如 Adrian 在那张票上所说的那样,在 SQL 中执行它实际上会通过使诸如可调用默认值之类的事情变得不可能来减少当前的功能。

您还应该反射(reflection)为什么让这些相对琐碎的细节掩盖了 Django 给您带来的巨大好处:富有表现力的 ORM、模板语言、蓬勃发展的社区、大量的第三方应用程序……但是,即便如此,如果它真的不适合你,你可以自由选择其他东西。

关于mysql - Django 特性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18975376/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com