网站开发学习Python实现-Django的models学习-生鲜项目(6.3.2)
@
1.说明
models是django的很重要的部分,所以深入研究。
本文章的所研究项目为黑马教育python课程中的项目实战-天天生鲜项目
这里就简单的描述下,会把研究的代码放在github,多研究几个来形成自己的知识体系
2.模型类的设计

3.代码的具体实现

文件夹中只有代码的models部分
该项目中一共有4个大类:cart(购物车),goods(商品),order(订单),user(用户)
然后里面有一个db文件夹,里面放的是base_model,所有的model的通用父类
from django.db import models
class BaseModel(models.Model):
    '''模型抽象基类'''
    create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
    update_time = models.DateTimeField(auto_now=True, verbose_name='更新时间')
    is_delete = models.BooleanField(default=False, verbose_name='删除标记')
    class Meta:
        # 说明是一个抽象模型类
        abstract = True
作用:定义了三个字段,创建时间,更新时间,是否删除字段
然后通过元类的属性来说明,这一个类是一个抽象类
from django.db import models
from django.contrib.auth.models import AbstractUser
from db.base_model import BaseModel
# Create your models here.
class User(AbstractUser, BaseModel):
    '''用户模型类'''
    class Meta:
        db_table = 'df_user'
        verbose_name = '用户'
        verbose_name_plural = verbose_name
........
django中db很重要所以,db的包就在django下面,然后如果要创建一个模型,都要继承db.models下的model
第二个import是导入django.contrib.auth.models(django发行版本.认证.模型)
下的abstractuser(抽象用户),为什么要导入这个呢,因为django做得太好了,把那种通用的表都抽象整合在一起了,要的时候直接用就完事
可以看到我们定义的user表,继承了额abstractuser和basemodel(一个django自带的,一个自己定义的)
然后在user的内部类中定义db_table 也就是在数据库中建表的名称,至于verbose_name 好像就对admin后头中的显示有帮助,应该没有其他作用毕竟可以为中文,plural是复数的意思。
关于其他的都放在github上,每句都会有注释
4.详情地址
gitee:https://gitee.com/bothsavage/DjangoModleStudy.git
github:https://github.com/BOTHSAVAGE/DjangoModleStudy.git
关于作者
个人博客网站
个人GitHub地址
个人公众号:
网站开发学习Python实现-Django的models学习-生鲜项目(6.3.2)的更多相关文章
- 在学习python的Django\Flask\Tornado前你需要知道的,what is web?
		我们都在讲web开发web开发,那到底什么是web呢? 如果你正在学习python三大主流web框架,那这些你必须要知道了 软件开发架构: C/S架构:Client/Server 客户端与服务端 ... 
- Django框架学习——python模拟Django框架(转载)
		原贴来源 http://wiki.woodpecker.org.cn/moin/ObpLovelyPython/AbtWebModules python实现web服务器 web开发首先要有web服务器 ... 
- 【Python】django模型models的外键关联使用
		Python 2.7.10,django 1.8.6 外键关联:http://www.bubuko.com/infodetail-618303.html 字段属性:http://www.cnblogs ... 
- python关于Django搭建简单博客项目(详解一)
		上一篇我们说了如何搭建简易博客网站,下面我们来进行详细解答.本文没有特定顺序,请结合上一篇和源代码参照学习. 相关源代码和解析请参看:https://github.com/Cheng0829/mysi ... 
- Window环境下Python和Django的安装,以及项目的创建
		1.首先我们要下载python和Django,他们的下载地址如下 python地址:https://www.python.org/ Django地址: https://www.djangoproje ... 
- 网站开发学习Python实现-Django学习-总结(6.1.2)
		@ 目录 1.MVT 2.模型 3.视图 4.模板 5.常用的命令 6.pycharm创建django工程 关于作者 1.MVT 项目结构如下,其中项目同名文件夹为配置文件 每一个项目有多个应用(未考 ... 
- 网站开发学习Python实现-Django项目部署-介绍(6.2.1)
		@ 目录 1.第一步:找源码 2.第二步:在windows中更改代码 2.第三步:同步到linux中 3.第三步:部署 4.第四步:运行 关于作者 1.第一步:找源码 从github上找一个djang ... 
- 网站开发学习Python实现-Django学习-自学注意(6.1.3)
		@ 目录 1.配置文件相关 2.应用创建相关 3.项目相关 4.模板相关 5.其他 关于作者 1.配置文件相关 1.可以更改时间,地区相关(国际化) 2.BASE_DIR很重要,一个工程要有很好的移植 ... 
- 网站开发学习Python实现-Django学习-介绍(6.1.1)
		@ 目录 1.MVT 2.ORM 关于作者 1.MVT 主要的目的是为了快速,简便的开发数据库驱动的网站,强调代码的复用,多个组件可以很方便以插件的方式服务于整个框架,采用的是MVT设计模式(差不多的 ... 
随机推荐
- 教你调节Boom 3D的3D音效强度,让音乐更带感
			Boom 3D的专业3D环绕技术,让用户能全身心地沉浸在立体音效中.无论是聆听音乐,还是观赏电影,立体音效都能为人们带来更加真实的听觉感触. 那么,Boom 3D的3D环绕功能到底能给用户带来怎样的体 ... 
- 接上一篇:(二) IOC的概念和作用
			IOC的概念和作用 控制反转(IoC:Inversion of Control)把创建对象的权利转交给框架(框架的重要特征),并非面向对象的专用术语. 它包含依赖注入(DI:Dependency In ... 
- JavaSE 学习笔记01丨开发前言与环境搭建、基础语法
			本蒟蒻学习过C/C++的语法,故在学习Java的过程中,会关注于C++与Java的区别.开发前言部分,看了苏星河教程中的操作步骤.而后,主要阅读了<Java核心技术 卷1 基础知识>(第8 ... 
- 学会了这一招,距离Git大神不远了!
			大家好,今天我们来介绍git当中一项非常重要的功能--交互式工具 有的时候如果我们要处理的文件很多,使用git add .等操作会非常有隐患,因为很有可能我们一不小心就疏忽了一些内容.如果我们使用一个 ... 
- CentOS下关于集群同步/LB/HA 的尝试
			Zookepper 集群同步 下载解压 wget http://apache.fayea.com/zookeeper/stable/zookeeper-3.4.8.tar.gz tar xvf zoo ... 
- 基于 RabbitMQ-EasyNetQ 实现.NET与Go的消息调度交互
			基于 RabbitMQ 实现跨语言的消息调度 微服务的盛行,使我们由原来的单机"巨服务"的项目拆分成了不同的业务相对独立的模块,以及与业务不相关的中间件模块.这样我们免不了在公司不 ... 
- 『CDN』让你的网站访问起来更加柔顺丝滑
			我是风筝,公众号「古时的风筝」,一个兼具深度与广度的程序员鼓励师,一个本打算写诗却写起了代码的田园码农! 文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在 ... 
- Linux 硬盘挂载及开机挂载
			一.分区 主分区.扩展分区.逻辑分区的区别 主分区:包含操作系统启动所必需的文件和数据的硬盘分区,如需在硬盘上安装操作系统,该硬盘必须得有一个主分区 扩展分区:除主分区外的分区,不能直接使用,必须再划 ... 
- 第8.34节 《Python类中常用的特殊变量和方法》总结
			本章介绍了Python类中常用的特殊变量和方法,这些特殊变量和方法都有特殊的用途,是Python强大功能的基石之一,许多功能非常有Python特色.由于Python中一切皆对象,理解这些特殊变量和方法 ... 
- PyQt(Python+Qt)学习随笔:QListView的isWrapping属性
			老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QListView的isWrapping属性用于控制视图中的数据项项布局在可见区域中没有足够空间时是 ... 
