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实现代理服务功能实例
Nov 15 Python
Python实现全局变量的两个解决方法
Jul 03 Python
零基础写python爬虫之抓取百度贴吧代码分享
Nov 06 Python
Python callable()函数用法实例分析
Mar 17 Python
Python 实现引用其他.py文件中的类和类的方法
Apr 29 Python
Python实现的字典排序操作示例【按键名key与键值value排序】
Dec 21 Python
利用python如何在前程无忧高效投递简历
May 07 Python
使用python进行波形及频谱绘制的方法
Jun 17 Python
基于MATLAB和Python实现MFCC特征参数提取
Aug 13 Python
Tensorflow:转置函数 transpose的使用详解
Feb 11 Python
Python依赖包迁移到断网环境操作
Jul 13 Python
Python 程序员必须掌握的日志记录
Aug 17 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
虫族 Zerg 魔法科技
2020/03/14 星际争霸
PHP HTTP 认证实例详解
2016/11/03 PHP
在你的网页中嵌入外部网页的方法
2007/04/02 Javascript
Prototype源码浅析 String部分(三)之HTML字符串处理
2012/01/15 Javascript
自己实现ajax封装示例分享
2014/04/01 Javascript
全国省市二级联动下拉菜单 js版
2016/05/10 Javascript
Javascript对象字面量的理解
2016/06/22 Javascript
全面了解JavaScript对象进阶
2016/07/19 Javascript
Javascript获取图片原始宽度和高度的方法详解
2016/09/20 Javascript
微信小程序 textarea 组件详解及简单实例
2017/01/10 Javascript
微信小程序 使用canvas制作K线实例详解
2017/01/12 Javascript
Jquery鼠标放上去显示全名的实现方法
2017/02/06 Javascript
微信小程序开发问题之wx.previewImage
2018/12/25 Javascript
原生JS实现逼真的图片3D旋转效果详解
2019/02/16 Javascript
巧妙运用v-model实现父子组件传值的方法示例
2019/04/07 Javascript
js tab栏切换代码实例解析
2019/09/03 Javascript
React实现类似淘宝tab居中切换效果的示例代码
2020/06/02 Javascript
实例讲解python函数式编程
2014/06/09 Python
在Python中操作文件之truncate()方法的使用教程
2015/05/25 Python
python僵尸进程产生的原因
2017/07/21 Python
Python温度转换实例分析
2018/01/17 Python
Python干货:分享Python绘制六种可视化图表
2018/08/27 Python
解决安装python库时windows error5 报错的问题
2018/10/21 Python
详解Django+uwsgi+Nginx上线最佳实战
2019/03/14 Python
使用python写的opencv实时监测和解析二维码和条形码
2019/08/14 Python
Python数据可视化:泊松分布详解
2019/12/07 Python
美国最大点评网站:Yelp
2018/02/14 全球购物
上海微创软件面试题
2012/06/14 面试题
销售实习自我鉴定
2013/12/07 职场文书
公司董事长职责
2013/12/12 职场文书
幼儿园毕业寄语
2014/04/03 职场文书
岗位标兵事迹材料
2014/05/17 职场文书
财务检查整改报告
2014/11/06 职场文书
签订劳动合同通知书
2015/04/16 职场文书
python 开心网和豆瓣日记爬取的小爬虫
2021/05/29 Python
动画「进击的巨人」第86话播出感谢绘公开
2022/03/21 日漫