Django db relationship
# coding=utf-8
from django.db import models """
Django数据库关系:
一对一关系:OneToOneField
多对多关系:ManyToManyField
多对一关系:ForeignKey
""" ## One-to-one relationships
class Place(models.Model):
name = models.CharField(max_length=50)
address = models.CharField(max_length=80) def __str__(self): # __unicode__ on Python 2
return "%s the place" % self.name class Restaurant(models.Model):
place = models.OneToOneField(Place, primary_key=True)
serves_hot_dogs = models.BooleanField(default=False)
serves_pizza = models.BooleanField(default=False) def __str__(self): # __unicode__ on Python 2
return "%s the restaurant" % self.place.name ## CREATE TABLE `db_place` (
## `id` int(11) NOT NULL AUTO_INCREMENT,
## `name` varchar(50) NOT NULL,
## `address` varchar(80) NOT NULL,
## PRIMARY KEY (`id`)
## ) ENGINE=InnoDB DEFAULT CHARSET=utf8
##
## CREATE TABLE `db_restaurant` (
## `place_id` int(11) NOT NULL,
## `serves_hot_dogs` tinyint(1) NOT NULL,
## `serves_pizza` tinyint(1) NOT NULL,
## PRIMARY KEY (`place_id`),
## CONSTRAINT `db_restaurant_place_id_606d40e1_fk_db_place_id` FOREIGN KEY (`place_id`) REFERENCES `db_place` (`id`)
## ) ENGINE=InnoDB DEFAULT CHARSET=utf8 class Waiter(models.Model):
restaurant = models.ForeignKey(Restaurant)
name = models.CharField(max_length=50) def __str__(self): # __unicode__ on Python 2
return "%s the waiter at %s" % (self.name, self.restaurant) # CREATE TABLE `db_waiter` (
# `id` int(11) NOT NULL AUTO_INCREMENT,
# `name` varchar(50) NOT NULL,
# `restaurant_id` int(11) NOT NULL,
# PRIMARY KEY (`id`),
# KEY `db_waiter_ee9d9d3e` (`restaurant_id`),
# CONSTRAINT `db_waiter_restaurant_id_7b6c7331_fk_db_restaurant_place_id` FOREIGN KEY (`restaurant_id`) REFERENCES `db_restaurant` (`place_id`)
# ) ENGINE=InnoDB DEFAULT CHARSET=utf8
#
# >python manage.py syncdb
# Operations to perform:
# Apply all migrations: admin, contenttypes, auth, sessions
# Running migrations:
# Applying contenttypes.0001_initial... OK
# Applying auth.0001_initial... OK
# Applying admin.0001_initial... OK
# Applying sessions.0001_initial... OK
#
# You have installed Django's auth system, and don't have any superusers defined.
# Would you like to create one now? (yes/no): yes
# Username (leave blank to use 'zhangsan'): admin
# Email address: admin@admin.com
# Password:*****
# Password (again):*****
# Superuser created successfully.
#
# >python manage.py makemigrations
# Migrations for 'db':
# 0001_initial.py:
# - Create model Place
# - Create model Restaurant
# - Create model Waiter
#
# >python manage.py migrate
# Operations to perform:
# Apply all migrations: admin, contenttypes, db, auth, sessions
# Running migrations:
# Applying db.0001_initial... OK ## Many-to-many relationships
class Publication(models.Model):
title = models.CharField(max_length=30) def __str__(self): # __unicode__ on Python 2
return self.title class Meta:
ordering = ('title',) class Article(models.Model):
headline = models.CharField(max_length=100)
publications = models.ManyToManyField(Publication) def __str__(self): # __unicode__ on Python 2
return self.headline class Meta:
ordering = ('headline',) ## CREATE TABLE `db_publication` (
## `id` int(11) NOT NULL AUTO_INCREMENT,
## `title` varchar(30) NOT NULL,
## PRIMARY KEY (`id`)
## ) ENGINE=InnoDB DEFAULT CHARSET=utf8
##
##
## CREATE TABLE `db_article` (
## `id` int(11) NOT NULL AUTO_INCREMENT,
## `headline` varchar(100) NOT NULL,
## PRIMARY KEY (`id`)
## ) ENGINE=InnoDB DEFAULT CHARSET=utf8
##
## CREATE TABLE `db_article_publications` (
## `id` int(11) NOT NULL AUTO_INCREMENT,
## `article_id` int(11) NOT NULL,
## `publication_id` int(11) NOT NULL,
## PRIMARY KEY (`id`),
## UNIQUE KEY `article_id` (`article_id`,`publication_id`),
## KEY `db_article_publications_a00c1b00` (`article_id`),
## KEY `db_article_publications_72ef6487` (`publication_id`),
## CONSTRAINT `db_article_publicat_publication_id_407fcd4d_fk_db_publication_id` FOREIGN KEY (`publication_id`) REFERENCES `db_publication` (`id`),
## CONSTRAINT `db_article_publications_article_id_b757f51_fk_db_article_id` FOREIGN KEY (`article_id`) REFERENCES `db_article` (`id`)
## ) ENGINE=InnoDB DEFAULT CHARSET=utf8 # >python manage.py makemigrations
# Migrations for 'db':
# 0002_auto_20141013_1311.py:
# - Create model Article
# - Create model Publication
# - Add field publications to article
#
# >python manage.py migrate
# Operations to perform:
# Apply all migrations: admin, contenttypes, db, auth, sessions
# Running migrations:
# Applying db.0002_auto_20141013_1311... OK ## Many-to-one relationships
class Reporter(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
email = models.EmailField() def __str__(self): # __unicode__ on Python 2
return "%s %s" % (self.first_name, self.last_name) class Articler(models.Model):
headline = models.CharField(max_length=100)
pub_date = models.DateField()
reporter = models.ForeignKey(Reporter) def __str__(self): # __unicode__ on Python 2
return self.headline class Meta:
ordering = ('headline',) ## CREATE TABLE `db_reporter` (
## `id` int(11) NOT NULL AUTO_INCREMENT,
## `first_name` varchar(30) NOT NULL,
## `last_name` varchar(30) NOT NULL,
## `email` varchar(75) NOT NULL,
## PRIMARY KEY (`id`)
## ) ENGINE=InnoDB DEFAULT CHARSET=utf8
##
## CREATE TABLE `db_articler` (
## `id` int(11) NOT NULL AUTO_INCREMENT,
## `headline` varchar(100) NOT NULL,
## `pub_date` date NOT NULL,
## `reporter_id` int(11) NOT NULL,
## PRIMARY KEY (`id`),
## KEY `db_articler_947bdf92` (`reporter_id`),
## CONSTRAINT `db_articler_reporter_id_26a49a33_fk_db_reporter_id` FOREIGN KEY (`reporter_id`) REFERENCES `db_reporter` (`id`)
## ) ENGINE=InnoDB DEFAULT CHARSET=utf8 # >python manage.py makemigrations
# Migrations for 'db':
# 0003_auto_20141013_1318.py:
# - Create model Articler
# - Create model Reporter
# - Add field reporter to articler
#
# >python manage.py migrate
# Operations to perform:
# Apply all migrations: admin, contenttypes, db, auth, sessions
# Running migrations:
# Applying db.0003_auto_20141013_1318... OK
源码下载:http://git.oschina.net/gitlab/StartWithCoding/tree/master/example/django/django_db_relationships
Django db relationship的更多相关文章
- 在django项目外,使用django.db链接数据库(postgres)
要用python链接到数据库,又不想写太多代码.想到了django,就偷懒了下.用django.db直连. django版本:1.6.5 (1.5以后可以用以下代码) #coding=utf-8 __ ...
- django - from django.db.models import F - class F
F() 的执行不经过 python解释器,不经过本机内存,是生成 SQL语句的执行. # Tintin filed a news story! reporter = Reporters.objects ...
- django: db - display
本讲介绍数据在页面中的呈现,内容很简单,就是嵌套循环在模板中的使用. 一,修改 csvt03/urls.py: from django.conf.urls import patterns, inclu ...
- django: db - admin
本讲演示简单使用 Django Admin 功能. 一,修改 settings.py,添加 admin 应用: INSTALLED_APPS = ( 'django.contrib.auth', 'd ...
- django: db - many to one
models 模块中的对象有三种对应关系:多对一,多对多,一对一.本讲说明多对一关系. blog/models.py: from django.db import models class Emplo ...
- django: db howto - 2
继 django: db howto - 1 : 一 操作数据库的三种方式: [root@bogon csvt03]# python2.7 manage.py shell Python 2.7.5 ( ...
- django: db howto - 1
以在 Django 中使用 MySQL 为例,首先要安装 MySQL 和 MySQL-python 组件,确保 python 能执行 import MySQLdb. MySQL 中创建数据库: [ro ...
- django.db.utils.OperationalError: 1050解决方案
manage.py migrate时进行同步数据库时出现问题;django.db.utils.OperationalError: (1050, "Table '表名' already exi ...
- 报错django.db.migrations.exceptions.InconsistentMigrationHistory
Pycharm强大的功能总是让我很是着迷,比如它的makemigrations 和 migrate. 然而某一次,当我再次敲下这熟悉的命令时,它报错了.... Traceback (most rece ...
随机推荐
- hdoj 2196 Computer【树的直径求所有的以任意节点为起点的一个最长路径】
Computer Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- 快速幂模m算法
给你三个数,a,b,m 求a^b%m的值. 如果b过大,用普通的快速幂会超时. 所以将b=2^0*b0+2^1*b+b1...... 然后,你们利用初中的知识就知道怎么做了. 继续,上代码. #inc ...
- jquery_EasyUI的学习
1 Accordion(可折叠标签) 1.1 实例 1.1.1 代码 <html> <head> <meta http-equiv="Content-Type& ...
- [置顶] Array ArrayList LinkList的区别剖析
这是一个面试中我们经常被问到的问题 Array.ArrayList.LinkList之间的区别:Array.ArrayList.LinkList均属于泛型的范畴,都用来存放元素,主要区别是Array是 ...
- HDU2255 奔小康赚大钱【二分图最佳匹配】
题目链接: http://acm.hdu.edu.cn/showproblem.php? pid=2255 题目大意: 村里要分房子. 有N家老百姓,刚好有N间房子.考虑到每家都要有房住,每家必须分配 ...
- Android之TextureView浅析
近期.在改动Android4.4的原生相机Camera2,非常习惯的去寻找SurfaceView.结果任凭我使用grep还是ack.都无法搜索到SurfaceView,最后还是通过代码CameraAc ...
- 两层Fragment嵌套,外层Fragment切换时内层Fragment不显示内容
尊重他人劳动成果,转载请说明出处:http://blog.csdn.net/bingospunky/article/details/46847269 需求 在搭界面有这么样一个需求:须要两层的Frag ...
- iOS-UIScrollView的delaysContentTouches与canCencelContentTouches属性
UIScrollView工作原理 在滚动过程当中,其实是在修改原点坐标 UIScrollView有一个BOOL类型的tracking属性,用来返回用户是否已经触及内容并打算开始滚动,我们从这个属性开始 ...
- ASP.NET-FineUI开发实践-16(一)
还是基础的东西,grid全选没有事件,给加个事件,除了需要会复制粘贴外还要点推荐那! 第一步:原理 事件被触发,方法被实现. 对于全选事件,被触发有两种方式可写,一个是通过原生extjs方式触发 ...
- Adb工具常用操作(一)
一.启动或关闭server 1.3 Android SDK中的常用命令行工具 在<Android SDK安装目录>\tools目录中带了很多命令行工具.虽然一般的开发人员并不需要完全掌握 ...