dango models and database ---- relation ship
一、django自带的ORM中可以定义表与表之间的对应关系、现比较一下各个不同关系之间数据库端的实现
1、ForeignKey(ManyToOne)关系
from django.db import models # Create your models here. class User(models.Model):
name=models.CharField(max_length=30)
phoneNumber=models.BigIntegerField() class Blog(models.Model):
user=models.ForeignKey(User)
blogName=models.CharField(max_length=16)
content=models.TextField() #
CREATE TABLE `sitea_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(30) NOT NULL,
`phoneNumber` bigint(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `sitea_blog` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`blogName` varchar(16) NOT NULL,
`content` longtext NOT NULL,
`user_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `sitea_blog_user_id_2c1e69b4_fk_sitea_user_id` (`user_id`),
CONSTRAINT `sitea_blog_user_id_2c1e69b4_fk_sitea_user_id` FOREIGN KEY (`user_id`) REFERENCES `sitea_user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
2、ManyToManyField关系
from django.db import models # Create your models here. class User(models.Model):
name=models.CharField(max_length=30)
phoneNumber=models.BigIntegerField() class Blog(models.Model):
user=models.ManyToManyField(User)
blogName=models.CharField(max_length=16)
content=models.TextField()
CREATE TABLE `sitea_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(30) NOT NULL,
`phoneNumber` bigint(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ; CREATE TABLE `sitea_blog` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`blogName` varchar(16) NOT NULL,
`content` longtext NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `sitea_blog_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`blog_id` int(11) NOT NULL,
`user_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `sitea_blog_user_blog_id_user_id_cdb4869e_uniq` (`blog_id`,`user_id`),
KEY `sitea_blog_user_user_id_a960fdcf_fk_sitea_user_id` (`user_id`),
CONSTRAINT `sitea_blog_user_blog_id_72f927d9_fk_sitea_blog_id` FOREIGN KEY (`blog_id`) REFERENCES `sitea_blog` (`id`),
CONSTRAINT `sitea_blog_user_user_id_a960fdcf_fk_sitea_user_id` FOREIGN KEY (`user_id`) REFERENCES `sitea_user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- 由上面可以看出ManyToMany 关系也是和通常的作法差不多、 加一个关联表
3、OneToOne关系
from django.db import models # Create your models here. class User(models.Model):
name=models.CharField(max_length=30)
phoneNumber=models.BigIntegerField() class Blog(models.Model):
user=models.OneToOneField(User,default=1)
blogName=models.CharField(max_length=16)
content=models.TextField()
CREATE TABLE `sitea_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(30) NOT NULL,
`phoneNumber` bigint(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `sitea_blog` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`blogName` varchar(16) NOT NULL,
`content` longtext NOT NULL,
`user_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `user_id` (`user_id`),
CONSTRAINT `sitea_blog_user_id_2c1e69b4_fk_sitea_user_id` FOREIGN KEY (`user_id`) REFERENCES `sitea_user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
---
dango models and database ---- relation ship的更多相关文章
- dango models and database ---- verbose name
一.django 自带ORM: 1.在django中用models.Mode来描述一张数据库中的表.而列用models.*Field来描述列 from django.db import models ...
- [Django] Creating an app, models and database
To add a new app, first cd to the project. Then run: python manage.py startapp scrumboard After that ...
- Database and models
Database and models The database Now that we have the Album module set up with controller action met ...
- Database API
Database API Introduction Basic Usage Selects Joins Aggregates Raw Expressions Inserts Updates Delet ...
- Django templates and models
models templates models and databases models 如何理解models A model is the single, definitive source of ...
- [转]Design Pattern Interview Questions - Part 4
Bridge Pattern, Composite Pattern, Decorator Pattern, Facade Pattern, COR Pattern, Proxy Pattern, te ...
- EF 5 最佳实践白皮书
Performance Considerations for Entity Framework 5 By David Obando, Eric Dettinger and others Publish ...
- django操作多数据库
django操作多数据库 1. 添加数据库路由分配文件 在项目文件夹里创建‘database_router’文件.将下面的代码复制到该文件里. from django.conf import s ...
- Android Weekly Notes Issue #225
Android Weekly Issue #225 October 2nd, 2016 Android Weekly Issue #225 本期内容包括: Android 7.0的Quick Sett ...
随机推荐
- RapidSVN的使用
RapidSVN是一个可视化 SVN 客户端,运行速度快,简单易用,现在很多已经做成做成便携版,安装都不用.小乌龟那个SVN感觉太复杂了...不妨试下这个. 1.下载安装 2.运行RapidSVNPo ...
- SIGSEGV异常时打印函数调用链
C语言写的程序跑飞了,怎样打印出函数调用链呢? linux_dev_framework软件包中的trace_exception_test.c就是一个实现演示样例. 该程序有益产生一个内存訪问异常,然后 ...
- CarbonData编译与安装
原文连接 http://xiguada.org/carbondata_compile/ CarbonData是啥? CarbonData is a fully indexed columnar and ...
- (转)Session URL重写
Session URL重写 发表于 2012 年 3 月 5 日 Session URL重写,保证在客户端禁用或不支持COOKIE时,仍然可以使用Session session机制.session机制 ...
- Netbeans配合xdebug调试
http://xdebug.org/download.php 下载对应的xdebug的dll不知道php文件中的ext文件夹中 并且加入以下配置在php.info 然后重启apche zend_ext ...
- oracle 对系统日期sysdate进行格式化:to_date(sysdate,'yyyy-MM-dd')
oracle 对系统日期sysdate进行格式化:to_date(sysdate,'yyyy-MM-dd') CreateTime--2018年5月17日10:11:34 Author:Maryd ...
- oracle 查询本周数据生成下周数据
CreateTime--2018年1月4日16:38:01 Author:Marydon oracle 查询本周数据生成下周数据 第一步:查询指定区间数据 第二步:改变查询结果的值 查询日期字段+ ...
- this详解与面向对象编程
原文链接:http://www.cnblogs.com/kongxy/p/4581223.html JS中的this对象详解 声明:文章转载自上面地址,版权归阿孔所有,这里仅供本人学习笔记使用 t ...
- js与jQuery方法对比
javascript与jQuery方法对比jquery对象转dom对象 // 方式一(推荐使用) $("input")[0] // 方式二 $("input" ...
- 〖Fedora〗设置Fedora静态ip地址
root@Fedora:~# cat /etc/sysconfig/network-scripts/ifcfg-eth0 # Intel Corporation 82540EM Gigabit Eth ...