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 ...
随机推荐
- tabhost中activity跳转动画不显示的解决办法
[1]如果是tabhost中的activity跳到其他的activity,用这篇blog的方法即可 http://blog.sina.com.cn/s/blog_8db8914301010t31.ht ...
- java 解析xml文件案例
package xmlTest; import javax.xml.parsers.*; import org.w3c.dom.*; public class GetXml { public stat ...
- linux创建用户,指定组
本博客不再更新 该文章新链接移步:http://it.lovepet.vip/archives/7/ 一.创建用户: 1.使用命令 useradd 例:useradd test——创建用户test ...
- postgresql的/d命令
ostgreSQL-psql常用命令 文章索引 [隐藏] \d命令 \d命令 1 2 3 格式: \d [ pattern ] \d [ pattern ] + 该命令将显示每个匹配关系(表,视图 ...
- web项目学习之sitemesh
sitemesh主要有三个主要文件:sitemesh.xml,decorators.xml和做布局用的jsp页面. 一.sitemesh.xml 对于sitemesh.xml这个文件,官方文档上说它不 ...
- js事件的方法
事件的方法:onclick 鼠标单击ondblclick 鼠标双击onkeyup 按下并释放键盘上的一个键时触发 onchange 文本内容或 ...
- ArrayList and LinkedList
ArrayList and LinkedList List代表一种线性表的数据结构,ArrayList则是一种顺序存储的线性表.ArrayList底层采用数组来保存每个集合元素,LinkedList则 ...
- VS2012 win7 修改TFS登陆账号的方法
.修改登陆账号: 在网上搜了好多,都没有找到解决方法,自己琢磨了一会找到了修改登陆TFS(Team Foundation Server)(团队资源管理器)的账号,和大家分享一下吧. 点击“开始”--“ ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(44)-工作流设计-设计表单
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(44)-工作流设计-设计表单 系列目录 设计表单是比较复杂的一步,完成一个表单的设计其实很漫长,主要分为四 ...
- Access中出现改变字段“自己主动编号”类型,不能再改回来!(已解决)
Access中出现改变字段"自己主动编号"类型,不能再改回来! (已解决) 一次把access中的自增字段改成了数值,再改回自增时,提示:在表中输入了数据之后,则不能将不论什么字段 ...