day1 ORM
ORM对象关系映射
映射关系:
表名 <-------> 类名
字段 <-------> 属性
表记录 <------->类实例对象
class Customer(models.Model):
'''客户信息表'''
name = models.CharField(max_length=32,blank=True,null=True)
qq = models.CharField(max_length=64,unique=True)
consult_course = models.ForeignKey("Course",verbose_name="咨询课程")
content = models.TextField(verbose_name="咨询详情") tags = models.ManyToManyField("Tag",blank=True,null=True,verbose_name="分类标签") status_choices = ((0,'已报名'),
(1,'未报名'),
)
status = models.SmallIntegerField(choices=status_choices,default=1) consultant = models.ForeignKey("UserProfile",verbose_name="学员顾问") memo = models.TextField(blank=True,null=True,verbose_name="备注")
date = models.DateTimeField(auto_now_add=True) def __str__(self):
return self.qq class Meta:
verbose_name ="客户表"
verbose_name_plural ="客户表"
admin.site.register(models.Customer)
模型字段参考文档
http://python.usyiyi.cn/documents/django_182/ref/models/fields.html#manytomany-arguments
字段类型
name = models.CharField(max_length=32) #字符串 #限定字段的长度 memo = models.TextField(blank=True,null=True) #大文本字段 date = models.DateField(auto_now_add=True) #时间字段 #自动填充选项
start_date = models.DateField(verbose_name="开班日期") amount = models.PositiveIntegerField(verbose_name="数额",default=500) #正整数字段 #0到2147483647的值 has_homework = models.BooleanField(default=True) # true/false 字段 #可迭代的结构,列表或是元组 #显示选择框
status_choices = ((0,'已报名'),
(1,'未报名'),
)
status = models.SmallIntegerField(choices=status_choices,default=1) #正整数字段 #从0 到 32767 这个区间
关联字段
course = models.ForeignKey("Course",verbose_name="所报课程") #多对一关系 #自动创建数据库索引 #Django 会在字段名上添加"_id" 来创建数据库中的列名
roles = models.ManyToManyField("Role",blank=True,null=True) #多对多关联 #与ForeignKey 的工作方式完全一样
user = models.OneToOneField(User) #一对一关联关系 #ForeignKey 设置了unique=True
字段选项
name = models.CharField(max_length=32,blank=True,null=True)
#该字段允许为空白 #空值存储为NULL (成对出现) name = models.CharField(unique=True,max_length=32,primary_key=True)
#表中必须有唯一值 #模型的主键字段
attendance = models.SmallIntegerField(choices=attendance_choices,default=0)
#字段的默认值0 contract_approved = models.BooleanField(default=False,verbose_name="合同已审核")
#一个字段的可读性更高的名称
__str__() (python3) 和 __unicode__() (python2.x)
方法定义了当object调用str()时应该返回的值
它以unicode方式返回任何对象的陈述。Python和Django需要输出字符串陈述时使用。
例如在交互式控制台或管理后台显示的输出陈述。
def __str__(self):
return "%s %s" %(self.customer,self.enrolled_class)
自定义字段类型 Meta 选项
class Meta:
unique_together = ('branch','course','semester') #用来设置的不重复的字段组合,必须唯一(将两个字段做联合唯一)
verbose_name = "班级" #指明一个易于理解和表述的对象名称,单数形式
verbose_name_plural = "班级" #对象的复数表述名:
day1 ORM的更多相关文章
- Spring Data JPA 大纲归纳
第一天: springdatajpa day1:orm思想和hibernate以及jpa的概述和jpa的基本操作 day2:springdatajpa的运行原理以及基本操作 day3:多表操作,复杂查 ...
- 老男孩Day13作业:ORM学员管理系统
一.作业需求: 用户角色,讲师\学员, 用户登陆后根据角色不同,能做的事情不同,分别如下 讲师视图: 管理班级,可创建班级,根据学员qq号把学员加入班级 可创建指定班级的上课纪录,注意一节上 ...
- 12 Spring Data JPA:orm思想和hibernate以及jpa的概述和jpa的基本操作
spring data jpa day1:orm思想和hibernate以及jpa的概述和jpa的基本操作 day2:springdatajpa的运行原理以及基本操作 day3:多表操作,复杂查询 d ...
- 终于等到你:CYQ.Data V5系列 (ORM数据层)最新版本开源了
前言: 不要问我框架为什么从收费授权转到免费开源,人生没有那么多为什么,这些年我开源的东西并不少,虽然这个是最核心的,看淡了就也没什么了. 群里的网友:太平说: 记得一年前你开源另一个项目的时候我就说 ...
- Enterprise Solution 3.1 企业应用开发框架 .NET ERP/CRM/MIS 开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms
行业:基于数据库的制造行业管理软件,包含ERP.MRP.CRM.MIS.MES等企业管理软件 数据库平台:SQL Server 2005或以上 系统架构:C/S 开发技术 序号 领域 技术 1 数据库 ...
- UWP开发之ORM实践:如何使用Entity Framework Core做SQLite数据持久层?
选择SQLite的理由 在做UWP开发的时候我们首选的本地数据库一般都是Sqlite,我以前也不知道为啥?后来仔细研究了一下也是有原因的: 1,微软做的UWP应用大部分也是用Sqlite.或者说是微软 ...
- 搭建一套自己实用的.net架构(3)续 【ORM Dapper+DapperExtensions+Lambda】
前言 继之前发的帖子[ORM-Dapper+DapperExtensions],对Dapper的扩展代码也进行了改进,同时加入Dapper 对Lambda表达式的支持. 由于之前缺乏对Lambda的知 ...
- CYQ.Data 从入门到放弃ORM系列:开篇:自动化框架编程思维
前言: 随着CYQ.Data 开始回归免费使用之后,发现用户的情绪越来越激动,为了保持这持续的激动性,让我有了开源的念头. 同时,由于框架经过这5-6年来的不断演进,以前发的早期教程已经太落后了,包括 ...
- CYQ.Data V5 从入门到放弃ORM系列:教程 - Log、SysLogs两个日志类使用
Log 静态类介绍: Public Static (Shared) Methods GetExceptionMessage 获取异常的内部信息 WriteLogToDB Overloaded. 将日志 ...
随机推荐
- PhoneGap模仿微信摇一摇功能
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- curl 抓取页面信息
<?php // 1. 初始化 $ch = curl_init(); // 2. 设置选项,包括URL curl_setopt($ch, CURLOPT_URL, "www" ...
- 【vue】饿了么项目-goods商品列表页开发
1.flex 属性是 flex-grow.flex-shrink 和 flex-basis 属性的简写属性. flex-grow 一个数字,规定项目将相对于其他灵活的项目进行扩展的量. flex-sh ...
- HDU 1561 The more, The Better(树形dp之树形01背包)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1561 The more, The Better Time Limit: 6000/2000 MS (J ...
- Redhat7.2 ----team网卡绑定
我先声明一下,team和bonding是一样的作用,只不过team多了几项功能bonding没有, 做team我们要最少准备两个网卡,我们这里主要显示主备模式. 首先我们先把网卡配置文件删除 nmcl ...
- Java 深入理解内部类
摘自海子:Java内部类详解 深入理解内部类 1.为什么成员内部类可以无条件访问外部类的成员? 在此之前,我们已经讨论过了成员内部类可以无条件访问外部类的成员,那具体究竟是如何实现的呢?下面通过反编译 ...
- async await循环请求
var sleep = function (item,time) { return new Promise(function (resolve, reject) { setTimeout(functi ...
- 利用纯JS和HTML Canvas生成随机迷宫过程中产生的有趣的事情
上效果图: #先看生成随机迷宫的代码吧↓ <html> <head> <title>生成随机迷宫v1.0</title> </head> & ...
- poj1733 Parity Game(扩展域并查集)
描述 Now and then you play the following game with your friend. Your friend writes down a sequence con ...
- Linux基础-5.利用vi编辑器创建和编辑正文文件
1.vi编辑器简介 1)掌握vi编辑器的定义:vi编辑器是Linux和Unix上最基本的文本编辑器,工作在字符模式下.由于不需要图形界面,vi是效率很高的文本编辑器.尽管在Linux上也有很多图形界面 ...