一、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的更多相关文章

  1. dango models and database ---- verbose name

    一.django 自带ORM: 1.在django中用models.Mode来描述一张数据库中的表.而列用models.*Field来描述列 from django.db import models ...

  2. [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 ...

  3. Database and models

    Database and models The database Now that we have the Album module set up with controller action met ...

  4. Database API

    Database API Introduction Basic Usage Selects Joins Aggregates Raw Expressions Inserts Updates Delet ...

  5. Django templates and models

    models templates models and databases models 如何理解models A model is the single, definitive source of ...

  6. [转]Design Pattern Interview Questions - Part 4

    Bridge Pattern, Composite Pattern, Decorator Pattern, Facade Pattern, COR Pattern, Proxy Pattern, te ...

  7. EF 5 最佳实践白皮书

    Performance Considerations for Entity Framework 5 By David Obando, Eric Dettinger and others Publish ...

  8. django操作多数据库

    django操作多数据库 1.    添加数据库路由分配文件 在项目文件夹里创建‘database_router’文件.将下面的代码复制到该文件里. from django.conf import s ...

  9. Android Weekly Notes Issue #225

    Android Weekly Issue #225 October 2nd, 2016 Android Weekly Issue #225 本期内容包括: Android 7.0的Quick Sett ...

随机推荐

  1. java 中文与unicode互转

    public class FontUtil { public static void main(String[] args) { System.out.println(chinaToUnicode(& ...

  2. Tor Browser(洋葱浏览器)——一款使你匿名上网的浏览器

    第一次知道Tor是在有关斯诺登的新闻报道中. 简单说Tor是一款是你匿名访问网络的的软件.用户通过Tor可以在因特网上进行匿名交流. 为了实现匿名目的,Tor把分散在全球的计算机集合起来形成一个加密回 ...

  3. 【spring boot】spring boot中使用@RestController不起作用,不返回json,依旧去找访问接口的请求地址对应的页面

    问题描述: spring boot中使用@RestController不起作用,不返回json,依旧去找访问接口的请求地址对应的页面 表现结果: 1>使用postman测试接口,表现为返回是40 ...

  4. Spark Client和Cluster两种运行模式的工作流程

    1.client mode: In client mode, the driver is launched in the same process as the client that submits ...

  5. acd The Game about KILL(和约瑟夫归则一样,归律)

    Problem Description Teacher HU and his 40 students were trapped by the brigands. To show their power ...

  6. 页游安全攻与防,SWF加密和隐藏密匙

    原文链接:http://netsecurity.51cto.com/art/201211/364775.htm 页游,最最核心的就是客户端(swf)与服务端的游戏通信了.游戏通信产生的封包,内容是否可 ...

  7. 支持向量机通俗导论(理解SVM的三层境界) by v_JULY_v

    支持向量机通俗导论(理解SVM的三层境界) 前言 动笔写这个支持向量机(support vector machine)是费了不少劲和困难的,原因很简单,一者这个东西本身就并不好懂,要深入学习和研究下去 ...

  8. Jni的Jclass JmethodID JfrieldID的差异

    Jni的Jclass JmethodID JfrieldID 这三者都是java类别的属性,本质上都是指标(Pointer).透过这些指标就能快速调用java类别的函数,或存取对象的属性值.在该类别被 ...

  9. 硬件加速 Hardware Accelerated 绘制

    官方文档中对硬件加速的描述 原文地址:http://developer.android.com/guide/topics/graphics/hardware-accel.html Beginning ...

  10. Servlet学习笔记(一):生命周期

    一.Servlet 生命周期: Servlet 生命周期可被定义为从创建直到毁灭的整个过程.以下是 Servlet 遵循的过程:初始化——响应请求——终止——回收 Servlet 通过调用 init ...