django模型字段设计用于更精确和语义上定义数据类型。
django-forcedfields的Python项目详细描述
摘要
一个python模块,提供一组自定义的、专门的django模型字段。
虽然我已经和django的orm一起工作了一段时间,并且喜欢它的许多特性 简单的用例,我发现自己越来越被它的局限性所阻碍、恼怒和不满 在复杂的应用中。在我看来,一个突出的问题是orm缺少语义数据库字段 数据类型和修改器。
例如,一个八个字符的varchar字段,可以为空,其默认值为 "elegy"不会导致mysql的ddl:
VARCHAR(8) DEFAULT 'elegy' NULL
但简单地说:
VARCHAR(8) NULL
虽然这个varchar示例可能不是最令人震惊的,但是它说明了 完全依赖应用程序及其orm来处理应该处理的行为,实际上 最好由数据库管理系统自己处理。
数据库应该尽可能自文档化和语义化,独立于任何应用程序 代码、orm模型或文档。我不会为了一个ORM而妥协这个原则 方便。为此,我已经开始创建这些自定义django模型字段来强制django 发出尽可能具体和完整的ddl语句。这是我的目标和未来 尽可能将职责从应用程序orm转移到基础数据库的字段 同时保持一致和完整的orm接口和数据库后端抽象。