Django day03之表设计分析
models.py文件中创建表字段分析实例:
图书管理系统--->
书、作者、出版社作为基表
from django.db import models
# Create your models here.
#先不要考虑外键关系,先创基表
class Book(models.Model):
'''
书名、价格、出版社、作者
'''
title=models.CharField(max_length=32)
#小数长度总共8位,小数占两位
price=models.DecimalField(max_digits=8,decimal_places=2)
#出版社和书是一对多关系,并且书是多的一方,所以外键字段建在书表中,
publish=models.ForeignKey(to='Publish')
#to用来指代和哪张表有关系,默认关联的就是表的主键字段
'''
一对多外键字段在创建的时候,同步到数据中,表字段会自动加_id后缀
如果你自己加了_id,我ORM头铁,会在后面再加一个_id,
所以你在写一对多外键字段的时候,不要自作聪明的加_id。
'''
#一本书可以有多个作者,一个作者可以有多本书,所以书和作者是多对多的关系,
# 外间字段建在任意一方都可以,但是建议你建立在查询频率较高的一方。
author=models.ManyToManyField(to='Author')
#django orm 会自动帮你创建书籍和作者的第三张关系表,
#author这个字段是一个虚拟字段,不会再表中展示出来,仅仅只是起到一个
#告诉 orm 建第三张表的关系的作用。
class Publish(models.Model):
'''
出版社名字、出版社邮箱
'''
title=models.CharField(max_length=32)
email=models.EmailField()
class Author(models.Model):
'''
作者名字、作者年龄
'''
name=models.CharField(max_length=64)
age=models.IntegerField()
#作者表和作者详情表是一对一的表关系,外键字段建在任意一方都可以,
#但是建议你建在查询频率较高的那一方。
author_detail=models.OneToOneField(to='Author_detail')
'''
一对一的外键字段,创建的时候,同步到数据中,表字段会自动加_id后缀,
如果你自己加了_id 我orm头铁,在后面再加一个_id,
所以你在写一对一外键字段的时候,不要自作聪明的加_id 。
'''
class Author_detail(models.Model):
'''
作者手机号、作者地址
'''
phone=models.BigIntegerField()
addr=models.CharField(max_length=32)
Django day03之表设计分析的更多相关文章
- [翻译]Django速查表
原文在此:https://code.djangoproject.com/wiki/DjangoCheatSheet Django速查表Django教程已经非常好了.这个速查表的作用是创建一个快速开始指 ...
- Winform开发框架中工作流模块的表设计分析
在较早博客随笔里面写过文章<Winform开发框架之简易工作流设计>之后,很久没有对工作流部分进行详细的介绍了,本篇继续这个主题,详细介绍其中的设计.实现及效果给大家,这个工作流在好几年前 ...
- 第二十二章 Django会话与表单验证
第二十二章 Django会话与表单验证 第一课 模板回顾 1.基本操作 def func(req): return render(req,'index.html',{'val':[1,2,3...]} ...
- Django的form表单
html的form表单 django中,前端如果要提交一些数据到views里面去,需要用到 html里面的form表单. 例如: # form2/urls.py from django.contrib ...
- 第四百零六节,自定义用户表类来继承Django的用户表类,
第四百零六节,自定义用户表类来继承Django的用户表类, models.py from django.db import models # Create your models here. from ...
- Django 之多表查询 与多表的使用
1.django的多表查询 主要区分为: 正向查询 逆向查询 1. 多表查询: 是一个复杂的查询,他分为对象查询和__模糊查询两种方式 2. 多表查询: 又分为 一对一查询, 一对多查询, 多对 ...
- Django:提交表单时遇到403错误:CSRF verification failed
Django:提交表单时遇到403错误:CSRF verification failed 问题: 提交表单时遇到403错误:CSRF verification failed 解决方案: 在表单界面ht ...
- django migrate生成表结构DateTimeField 类型加了6位精度别的框架无法调用的问题?
背景介绍 django migrate 生成表结构时,对于DateTimeField 类型的处理是加了6位精度的,只用django处理是没有任何问题的,但是如何别的框架来读取这种字段会读取不到该字段值 ...
- django重写form表单中的局部钩子函数
from django import forms from django.core.exceptions import ValidationError from jax import models c ...
随机推荐
- 读懂JWT的使用,你就会用PHP如何实现了
要如何用php实现JWT认证,那我们首先就来认识一下什么是JWT.什么是JWTJWT(json web token)是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准.JWT的声明一般被 ...
- 《master the game of GO wtth deep neural networks and tree search》研究解读
现在”人工智能“如此火爆的一大直接原因便是deepmind做出的阿尔法狗打败李世石,从那时开始计算机科学/人工智能成为了吹逼的主流.记得当时还是在学校晚新闻的时候看到的李世石输的消息,这个新闻都是我给 ...
- APACHE HADOOP安装
0.安装前准备 0.1 关闭防火墙 service iptables status service iptables stop 0.2 关闭Selinux 很多稀奇古怪的问题都是SELINUX导致的. ...
- es5设置属性不能修改
/*es5*/ { var Person ={ name:'es5', age:19 } Object.defineProperty(Person,'sex',{ writable:false, va ...
- at、crontab、anacron的基本使用
Linux的任务调度机制主要分为两种: 1. 执行一次:将在某个特定的时间执行的任务调度 at 2. 执行多次: crontab 3.关机后恢复尚未执行的程序 anacron. ①at at命令用于在 ...
- 设计模式之建造者模式--PHP
建造者模式:将一个负责对象的构建与它的表示分离,使得同样的构建过程有不同的表示.建造者模式是一步一步创建负责的对象,它允许开发者只通过指定对象的类型和内容就可以创建它们.开发者不需要知道具体的构造细节 ...
- PHP如何获取视频总时长与码率等信息
利用PHP中的FFmpeg读取视频播放时长与码率等信息 function getVideoInfo($file) { define('FFMPEG_PATH', '/usr/local/ff ...
- 复习sed实例操作
第6周复习课(5月2日) 课程内容: 复习 扩展1.打印某行到某行之间的内容http://ask.apelearn.com/question/5592.sed转换大小写 http://ask.apel ...
- 2019-2020-6 20199317《Linux内核原理与分析》第六周作业
第5章 系统调用的三层机制(下) 1 给MenuOS增加命令 首先进入LinuxKernel目录下,用rm -rf menu强制删除当前的menu目录,然后用git clone重新 ...
- js递归优化
递归优化 递归在我们平时撸码中会经常用到,不过可能很多人不知道递归的弊端,就是会导致调用栈越来越深.如果没有节制的使用递归可能会导致调用栈溢出. 那什么是递归呢? 递归调用是一种特殊的嵌套调用,是某个 ...