码农行者 码农行者
首页
  • Python

    • 语言特性
    • Django相关
    • Tornado
    • Celery
  • Golang

    • golang学习笔记
    • 对比python学习go
    • 模块学习
  • JavaScript

    • Javascript
  • 数据结构预算法笔记
  • ATS
  • Mongodb
  • Git
云原生
运维
垃圾佬的快乐
  • 数据库
  • 机器学习
  • 杂谈
  • 面试
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

DeanWu

软件工程师
首页
  • Python

    • 语言特性
    • Django相关
    • Tornado
    • Celery
  • Golang

    • golang学习笔记
    • 对比python学习go
    • 模块学习
  • JavaScript

    • Javascript
  • 数据结构预算法笔记
  • ATS
  • Mongodb
  • Git
云原生
运维
垃圾佬的快乐
  • 数据库
  • 机器学习
  • 杂谈
  • 面试
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Django 最佳实践-读书笔记 - 第六章 model 最佳实践

    • 当app的model过多时,拆分app
      • 模型继承的使用
        • 数据模型的规范化
          • 使用 Null 和 Blank时注意
            • 使用 GenericIPAddressField 代替IPAddressField,后者将要移除。
              • 使用 BinaryField 字段注意
                • 尽量避免使用通用关联关系
                  • 善于使用meta
                    • 自定义manager管理器时注意
                      • 理解“Fat models”
                      • 开发语言
                      • Python
                      • Best.Practices.for.Django
                      DeanWu
                      2016-05-22
                      目录

                      Django 最佳实践-读书笔记 - 第六章 model 最佳实践

                      其他章节索引页

                      # 第六章 model 最佳实践

                      # 当app的model过多时,拆分app

                      当app的model过多时,说明这个app的功能够大,此时就需要我们拆分app了。

                      # 模型继承的使用

                      • 抽象基类(区别django的抽象基类和python的抽象类)
                      • 多表继承(尽量不要使用,效率低下)
                      • 代理模式

                      # 数据模型的规范化

                      同数据库设计的规范化,推荐阅读:

                      • http://en.wikipedia.org/wiki/Database_normalization
                      • http://en.wikibooks.org/wiki/Relational_Database_Design/Normalization

                      # 使用 Null 和 Blank时注意

                      在字段上设置null=True 和 the blank=True,他们默认是False。

                      # 使用 GenericIPAddressField 代替IPAddressField,后者将要移除。

                      # 使用 BinaryField 字段注意

                      • django 1.8 增加了存储二进制的字段类型。当存储大容量二进制值,成为系统存储瓶颈时,可将二进制值放到文件中,使用 filefield 字段类型来解决。

                      • 不要用这个字段存储文件。 原因:

                        • 访问数据库,没有访问文件块
                        • 备份数据库,耗时增加
                        • 去访问文件,需要通过你的django app 。

                      # 尽量避免使用通用关联关系

                      • 加快查询速度
                      • 减少数据损坏造成的关联数据的问题

                      # 善于使用meta

                      # 自定义manager管理器时注意

                      • 抽象基类中,子类不能继承父类的 manager
                      • 会造成不能预知的问题
                      • objects = models.Manager() 放在所有自定义管理器的前边。

                      # 理解“Fat models”

                      • model behaviors 利用model的继承(抽象基类)特性实现。将model的部分属性或方法提取到一个Mixins中,通过继承来共用。 参考: http://blog.kevinastone.com/django-model-behaviors.html

                      • 辅助函数的使用。抽象对模型的重复操作,放到utility 函数中作为模型辅助函数。

                      #Django#Django最佳实践
                      上次更新: 2023/03/28, 16:27:19
                      最近更新
                      01
                      chromebox/chromebook 刷bios步骤
                      03-01
                      02
                      redis 集群介绍
                      11-28
                      03
                      go语法题二
                      10-09
                      更多文章>
                      Theme by Vdoing | Copyright © 2015-2024 DeanWu | 遵循CC 4.0 BY-SA版权协议
                      • 跟随系统
                      • 浅色模式
                      • 深色模式
                      • 阅读模式