不在models.py中的models
概述
如何让你定义的model不在models.py中
在app的models目录中的models

你新建一个app后这个models.py就会自动建立,里面只有几行代码。那么如果是一个中大型项目,每个app里面可能需要建立很多表(一个表就对应models.py里面定义的一个class),那把这些类都写在一个.py文件中显然不是一个好主意,主要是不利于维护,那么我们是否可以把那些对应表的类写在单独文件中,并且这些单独文件统一在一个目录中呢?当然可以,如下图:


这种结构看起来清晰明了但是如何使用呢?
我们实际上是在report这个app里建立了一个名为models的Python Package(而且名称必须是models)这时候它会自动建立一个__init__.py文件,这个文件通常情况下是空的,但是在当前情况下你就需要格外注意需要在这个文件中添加一些东西,如下图:

如上图所示也就导入在models包里面的模块以及模块里面的类,目的是对app可见,而且你models里有多少个模块,这里就要导入多少。通过上面这种结构你就可以把model放在app默认的models.py外面。下图是settings.py文件

但是要使用这种单独models目录的结构需要注意一下几点:
- 新建的Python Package名称必须叫做models,因为默认会检查models.py文件(通过<app>.models),所以需要一个名称相同的目录,而目录中的__init__.py则完成后续的导入工作。所以如果你用一个其他名字则不能使用这种结构。
- 在settings.py的INSTALLED_APPS中声明你建立的app
- 虽然在单独的目录中但是你定义的model也依然可以被访问,就像它们被定义在models.py文件中一样。访问路径依然是app.models
使用自定义名称
如果我不想使用models这一的目录而是想自己起一个更好听的名字可以吗?当然可以。

在自定义models目录场景中,就需要使用默认的models.py文件,目的是在这里导入哪些你自己定义的目录以及模块还有模块里面的类,除了这一点其他设置和上面第一种场景一致。另外自定义名称的models目录(上图中ConsuomModels)里面的__init__.py保留为空即可。
参考文章 Django models outside of models.py
不在models.py中的models的更多相关文章
- Python Django CMDB项目实战之-2创建APP、建模(models.py)、数据库同步、高级URL、前端页面展示数据库中数据
基于之前的项目代码来编写 Python Django CMDB项目实战之-1如何开启一个Django-并设置base页index页文章页面 现在我们修改一个文章列表是从数据库中获取数据, 下面我们就需 ...
- 超越村后端开发(2:新建models.py+xadmin的引入)
1.新建Model 1.users数据 1.在apps/users/models.py中: from datetime import datetime from django.db import mo ...
- Django - models.py 应用
Django - models.py 应用 编写 models.py 文件 from django.db import models # Create your models here. class ...
- 第三百零六节,Django框架,models.py模块,数据库操作——创建表、数据类型、索引、admin后台,补充Django目录说明以及全局配置文件配置
Django框架,models.py模块,数据库操作——创建表.数据类型.索引.admin后台,补充Django目录说明以及全局配置文件配置 数据库配置 django默认支持sqlite,mysql, ...
- 四 Django框架,models.py模块,数据库操作——创建表、数据类型、索引、admin后台,补充Django目录说明以及全局配置文件配置
Django框架,models.py模块,数据库操作——创建表.数据类型.索引.admin后台,补充Django目录说明以及全局配置文件配置 数据库配置 django默认支持sqlite,mysql, ...
- Django模型层(models.py)之模型创建
Django数据库操作是十分重要的内容,这两天简单学习了数据库的操作,这里做个总结. 1.ORM简介 简单的来说,ORM就是对象-关系-映射.它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖 ...
- django之 使用views.py里面的函数对表进行增删改查 内容(models.py中表的创建、views.py中函数的使用,基于对象的跨表查询)
models之对于表的创建有以下几种: 一对一:ForeignKey("Author",unique=True), OneToOneField("Author" ...
- django models.py增加后MySQL数据库中并没有生成相应的表
根据教程到添加并保存quest的时候报错了 1.models.py里面的命名没有错 2.查看mysite->settiongs下的INSTALLED_APPS设置正确 3.使用python ma ...
- django搭建web (四) models.py
demo 该demo模型主要是用于问题,选择单个或多个答案的问卷形式应用 # -*- coding: utf-8 -*- from __future__ import unicode_literals ...
随机推荐
- C++ 使用 curl 进行 http 请求(GET、POST、Download)的封装
修改自网路 CommonTools.h /* * CommonTools.h * * Created on: 2018年8月2日 * Author: didi */ #include <iost ...
- Python爬虫爬取豆瓣读书
一,准备工作. 工具:win10+Python3.6 爬取目标:爬取图中红色方框的内容. 原则:能在源码中看到的信息都能爬取出来. 信息表现方式:CSV转Excel. 二,具体步骤. 先给出具体代码吧 ...
- C#中添加log4net(日志文件)
1.先下载引用“log4net” 2.然后再App.config配置 3.添加一个LogHandler类 4.在Assemblyinfo类中添加配置的读取文件 5.运用日志文件 6.显示结果
- React组件和生命周期简介
React 简介----React 是 Facebook 出品的一套颠覆式的前端开发类库.为什么说它是颠覆式的呢? 内存维护虚拟 DOM 对于传统的 DOM 维护,我们的步骤可能是:1.初始化 ...
- mysql数据库备份_可执行文件
这段时间接手运维的工作,刚开始就尝到了数据丢失的痛!老板抱怨,同事抱怨!都说先删库再跑路,我还不想跑! 下面是我的备份记录:(分4步) 1.编写备份执行文件sqlAutoBak.sh #!/bin/s ...
- nodejs内存溢出
npm-v 报错,错误信息如下: FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScri ...
- java:找出占用CPU资源最多的那个线程
linux环境下,当发现java进程占用CPU资源很高,且又要想更进一步查出哪一个java线程占用了CPU资源时,按照以下步骤进行查找: 1.先用top命令找出占用资源厉害的java进程id,如: 2 ...
- 用for; while...do; do...while; 写出九九乘法表
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- FCC(ES6写法) Make a Person
用下面给定的方法构造一个对象. 方法有 getFirstName(), getLastName(), getFullName(), setFirstName(first), setLastName(l ...
- hadoop基础操作
通过hadoop上的hive完成WordCount 启动hadoop Hdfs上创建文件夹 上传文件至hdfs 启动Hive 创建原始文档表 导入文件内容到表docs并查看 用HQL进行词频统计,结果 ...