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 06 Python
python去除所有html标签的方法
May 05 Python
Django的数据模型访问多对多键值的方法
Jul 21 Python
Flask框架中密码的加盐哈希加密和验证功能的用法详解
Jun 07 Python
Python实现代码统计工具(终极篇)
Jul 04 Python
Python判断文件或文件夹是否存在的三种方法
Jul 27 Python
python Pygame的具体使用讲解
Nov 03 Python
Python将string转换到float的实例方法
Jul 29 Python
简单了解python 生成器 列表推导式 生成器表达式
Aug 22 Python
python-docx文件定位读取过程(尝试替换)
Feb 13 Python
如何实现在jupyter notebook中播放视频(不停地展示图片)
Apr 23 Python
python中K-means算法基础知识点
Jan 25 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
火影忍者:三大瞳力之一的白眼,为什么没有写轮眼那么出色?
2020/03/02 日漫
一个漂亮的php验证码类(分享)
2013/08/06 PHP
php自定文件保存session的方法
2014/12/10 PHP
迪菲-赫尔曼密钥交换(Diffie?Hellman)算法原理和PHP实现版
2015/05/12 PHP
全面解读PHP的人气开发框架Laravel
2015/10/15 PHP
基于PHP实现用户注册登录功能
2016/10/14 PHP
出现“不能执行已释放的Script代码”错误的原因及解决办法
2007/08/29 Javascript
AJAX分页的代码(后台asp.net)
2011/02/14 Javascript
微信小程序 wx.login解密出现乱码的问题解决办法
2017/03/10 Javascript
jQuery+Cookie实现切换皮肤功能【附源码下载】
2018/03/25 jQuery
详解Vue实战指南之依赖注入(provide/inject)
2018/11/13 Javascript
详解小程序不同页面之间通讯的解决方案
2018/11/23 Javascript
VeeValidate 的使用场景以及配置详解
2019/01/11 Javascript
解决vue 表格table列求和的问题
2019/11/06 Javascript
js实现九宫格抽奖
2020/03/19 Javascript
Python GAE、Django导出Excel的方法
2008/11/24 Python
Python学习笔记之os模块使用总结
2014/11/03 Python
Python处理RSS、ATOM模块FEEDPARSER介绍
2015/02/18 Python
python下载文件时显示下载进度的方法
2015/04/02 Python
Python定时器实例代码
2017/11/01 Python
python编写分类决策树的代码
2017/12/21 Python
如何利用Python分析出微信朋友男女统计图
2019/01/25 Python
python用quad、dblquad实现一维二维积分的实例详解
2019/11/20 Python
python函数定义和调用过程详解
2020/02/09 Python
Python通过队列来实现进程间通信的示例
2020/10/14 Python
如何开发一款堪比APP的微信小程序(腾讯内部团队分享)
2016/12/22 HTML / CSS
使用html5制作loading图的示例
2014/04/14 HTML / CSS
夏威夷咖啡公司:Hawaii Coffee Company
2019/09/19 全球购物
市场营销大学生职业规划书
2014/02/25 职场文书
劳动工资科岗位职责范本
2014/03/02 职场文书
市场营销管理毕业生自荐信
2014/03/03 职场文书
幼儿园大班评语大全
2014/04/17 职场文书
校园安全标语
2014/06/07 职场文书
MySQL 发生同步延迟时Seconds_Behind_Master还为0的原因
2021/06/21 MySQL
基于PyQt5制作一个群发邮件工具
2022/04/08 Python
Ruby使用Mysql2连接操作MySQL
2022/04/19 Ruby