Django 模型类(models.py)的定义详解


Posted in Python onJuly 19, 2019

一.

Django 模型类(models.py)的定义详解

#在models.py中添加
#代码如下
from django.db import models

#出版商
class Publisher(models.Model):
  name=models.CharField(max_length=30)
  address=models.CharField(max_length=50)
  city=models.CharField(max_length=60)
  state_province=models.CharField(max_length=30)
  country=models.CharField(max_length=50)
  website=models.URLField()
  
#作者
class Author(models.Model):
  name=models.CharField(max_length=30)
  
#作者详情
class AuthorDetail(models.Model):
  sex=models.BooleanField(max_length=1,choices=((0,'男'),(1,'女')))
  email=models.EmailField()
  address=models.CharField(max_length=50)
  birthday=models.DateField()
  author=models.OneToOneField(Author)
  
#书详情
class Book(models.Model):
  name=models.CharField(max_length=100)
  authors=models.ManyToManyField(Author)
  publisher=models.ForeignKey(Publisher)
  publication_date=models.DateField()

上面的代码中:

1. 每个数据模型都继承django.db.models.Model。他们的父类Model包含了所有必要的和数据库交互的方法,并提供了一个简介漂亮的数据库定义语法。

2.每个模型相当于单个的数据库表(这种情况例外的是多对多的关系,多对多关系的时候会多生成一张关系表),每个属性也是这个表中的一个字段。属性名就是字段名,它的类型(例CharField)相当于数据库的字段类型(例如varchar)。

3.模型间的三种关系:一对一(OneToOneField) 一对多也就是外键(ForeignKey)

多对多(ManyToManyField)

4.模型的常用字段类型:

  • BooleanField:布尔类型字段
  • CharField:字符串类型字段
  • DateTimeField:日期字段
  • DecimalField:(精确)小数字段
  • EmailField:Email字段
  • FileField:文件字段(保存和处理上传的文件)
  • FloatField:(浮点数)小数字段
  • Imagefield:图片字段(保存和处理上传的图片)
  • IPAddressField:IP字段
  • IntegerField:整数字段
  • SmallIntegerField:小整数字段
  • TextField:文本字段
  • URLField:网页地址字段
  • ......

5.模型常用的字段选项:

  • null(null=True|False):数据库字段的设置是否可以为空(数据库进行验证)
  • blank(blank=True|False):字段是否为空django会进行校验(表单进行验证)
  • choices:轻量级的配置字段可选属性的定义
  • default:字段的默认选项
  • help_text:字符按文字帮助
  • primary_key(=True|False):一般不需要定义是否为主键,如果没有指明主键的话,django胡自动添加一个默认主键:id=models.AutoField(primary_key=True)
  • unique:是否唯一(对于数据表而言)
  • verbose_name:字段的详细名称,若不指定该属性,默认使用字段的属性名称

二.定义数据模型的扩展属性:

通过内部类Meta给数据模型类增加扩展属性:

class Meta:
  verbose_name='名称' #这里命名为中文名称,但显示时会在后面出现一个s
  verbose_name_plural='名称复数形式' #配合verbose使用去除s
  ordering=[排序字段]

1.

Django 模型类(models.py)的定义详解

Django 模型类(models.py)的定义详解

2.

Django 模型类(models.py)的定义详解

Django 模型类(models.py)的定义详解

三.定义模型方法:

定义模型方法和定义普通python类方法没有太大的差别,定义模型方法可以及那个当前对应的数据组装成具体的业务逻辑。

示例:定义__str__()方法让对象有个默认名字

注:python2中使用__unicode__(),python3中使用__str__()

Django 模型类(models.py)的定义详解

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python格式化字符串实例总结
Sep 28 Python
小议Python中自定义函数的可变参数的使用及注意点
Jun 21 Python
Python微信公众号开发平台
Jan 25 Python
转换科学计数法的数值字符串为decimal类型的方法
Jul 16 Python
python版本单链表实现代码
Sep 28 Python
python3 小数位的四舍五入(用两种方法解决round 遇5不进)
Apr 11 Python
使用python爬取微博数据打造一颗“心”
Jun 28 Python
python通过http下载文件的方法详解
Jul 26 Python
Python数据可视化:饼状图的实例讲解
Dec 07 Python
Python : turtle色彩控制实例详解
Jan 19 Python
Django 返回json数据的实现示例
Mar 05 Python
Python实现区域填充的示例代码
Feb 03 Python
Tensorflow实现神经网络拟合线性回归
Jul 19 #Python
使用TensorFlow实现简单线性回归模型
Jul 19 #Python
详解将Python程序(.py)转换为Windows可执行文件(.exe)
Jul 19 #Python
简单了解django缓存方式及配置
Jul 19 #Python
python实现最小二乘法线性拟合
Jul 19 #Python
这可能是最好玩的python GUI入门实例(推荐)
Jul 19 #Python
python如何实现数据的线性拟合
Jul 19 #Python
You might like
通过PHP的内置函数,通过DES算法对数据加密和解密
2012/06/21 PHP
ThinkPHP模板中判断volist循环的最后一条记录的验证方法
2014/07/01 PHP
Yii2简单实现多语言配置的方法
2016/07/23 PHP
PHP接口并发测试的方法(推荐)
2016/12/15 PHP
laravel 解决crontab不执行的问题
2019/10/22 PHP
让广告代码不再影响你的网页加载速度
2006/07/07 Javascript
jQuery实现原理的模拟代码 -6 代码下载
2010/08/16 Javascript
解决javascript:window.close()在chrome,Firefox下失效的问题
2013/05/07 Javascript
JavaScript String.replace函数参数实例说明
2013/06/06 Javascript
FF(火狐)浏览器无法执行window.close()解决方案
2014/11/13 Javascript
html的DOM中document对象anchors集合用法实例
2015/01/21 Javascript
纯javascript实现图片延时加载方法
2015/08/21 Javascript
node.js入门学习之url模块
2017/02/25 Javascript
利用node.js实现反向代理的方法详解
2017/07/24 Javascript
JavaScript实现动态添加Form表单元素的方法示例
2017/08/14 Javascript
从零开始最小实现react服务器渲染详解
2018/01/26 Javascript
vue devtools的安装与使用教程
2018/08/08 Javascript
深入理解Vue 组件之间传值
2018/08/16 Javascript
Vue2 添加数据可视化支持的方法步骤
2019/01/02 Javascript
es6数据变更同步到视图层的方法
2019/03/04 Javascript
JS中的算法与数据结构之栈(Stack)实例详解
2019/08/20 Javascript
Weex开发之WEEX-EROS开发踩坑(小结)
2019/10/16 Javascript
vue图片裁剪插件vue-cropper使用方法详解
2020/12/16 Vue.js
python检查URL是否正常访问的小技巧
2017/02/25 Python
python实现Zabbix-API监控
2018/09/17 Python
python多继承(钻石继承)问题和解决方法简单示例
2019/10/21 Python
Python如何使用ConfigParser读取配置文件
2020/11/12 Python
css3媒体查询中device-width和width的区别详解
2020/03/27 HTML / CSS
单身旅行者的单身假期:Just You
2018/04/08 全球购物
西班牙香水和化妆品连锁店:Druni
2019/05/05 全球购物
俄罗斯大型在线书店:Читай-город
2019/10/10 全球购物
网站文案策划岗位职责
2015/04/14 职场文书
关爱留守儿童捐款倡议书
2015/04/27 职场文书
二审答辩状格式
2015/05/22 职场文书
Pytorch中的学习率衰减及其用法详解
2021/06/05 Python
Java 实战项目之家居购物商城系统详解流程
2021/11/11 Java/Android