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 19 Python
python实现在无须过多援引的情况下创建字典的方法
Sep 25 Python
Python整型运算之布尔型、标准整型、长整型操作示例
Jul 21 Python
python Opencv将图片转为字符画
Feb 19 Python
python暴力解压rar加密文件过程详解
Jul 05 Python
python hash每次调用结果不同的原因
Nov 21 Python
浅谈OpenCV中的新函数connectedComponentsWithStats用法
Jul 05 Python
django restframework serializer 增加自定义字段操作
Jul 15 Python
Python基于tkinter canvas实现图片裁剪功能
Nov 05 Python
解决Python import .pyd 可能遇到路径的问题
Mar 04 Python
pandas:get_dummies()与pd.factorize()的用法及区别说明
May 21 Python
2021年最新用于图像处理的Python库总结
Jun 15 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
咖啡的种类和口感
2021/03/03 新手入门
zend api扩展的php对象的autoload工具
2011/04/18 PHP
解析PHP高效率写法(详解原因)
2013/06/20 PHP
通过php删除xml文档内容的方法
2015/01/23 PHP
DEDE实现转跳属性文档在模板上调用出转跳地址
2016/11/04 PHP
PHP实现根据密码长度显示安全条
2017/07/04 PHP
Jquery Validation插件防止重复提交表单的解决方法
2010/03/05 Javascript
JavaScript中判断对象类型的几种方法总结
2013/11/11 Javascript
JavaScript中的Math.sin()方法使用详解
2015/06/15 Javascript
javascript数据结构之双链表插入排序实例详解
2015/11/25 Javascript
详细分析Javascript中创建对象的四种方式
2016/08/17 Javascript
巧用canvas
2017/01/21 Javascript
Angular2中如何使用ngx-translate进行国际化
2017/05/21 Javascript
vue.js实现单选框、复选框和下拉框示例
2017/07/18 Javascript
Angularjs实现页面模板清除的方法
2018/07/20 Javascript
vue-cli3脚手架的配置及使用教程
2018/08/28 Javascript
react-navigation之动态修改title的内容
2018/09/26 Javascript
微信小程序带动画弹窗组件使用方法详解
2018/11/27 Javascript
了解JavaScript表单操作和表单域
2019/05/27 Javascript
JavaScript Array对象基本方法详解
2019/09/03 Javascript
Python中使用item()方法遍历字典的例子
2014/08/26 Python
使用Python机器学习降低静态日志噪声
2018/09/29 Python
浅谈python3中input输入的使用
2019/08/02 Python
python在OpenCV里实现投影变换效果
2019/08/30 Python
小白教你PyCharm从下载到安装再到科学使用PyCharm2020最新激活码
2020/09/25 Python
英国川宁茶官方网站:Twinings茶
2019/05/21 全球购物
法律专业自我鉴定
2013/10/03 职场文书
天猫某品牌专卖店运营计划书
2014/03/21 职场文书
档案保密承诺书
2014/06/03 职场文书
中国梦团日活动总结
2014/07/07 职场文书
基层工作经验证明样本
2014/11/16 职场文书
入党宣誓大会后的感想
2015/08/10 职场文书
《黄道婆》教学反思
2016/02/22 职场文书
SpringCloud Feign请求头删除修改的操作代码
2022/03/20 Java/Android
Python必备技巧之函数的使用详解
2022/04/04 Python
Centos系统通过Docker安装并搭建MongoDB数据库
2022/04/12 MongoDB