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 ...
随机推荐
- 最全面的 DNS 原理入门
DNS 是互联网核心协议之一.不管是上网浏览,还是编程开发,都需要了解一点它的知识. 本文详细介绍DNS的原理,以及如何运用工具软件观察它的运作.我的目标是,读完此文后,你就能完全理解DNS. 一.D ...
- Google Picasa
本博文的主要内容有 .Google Picasa的下载 .Google Picasa的安装 .Google Picasa的使用 Google 的免费图片管理工具Picasa,数秒钟内就可找到并欣赏计算 ...
- Erasing Edges - SGU 136(构造多边形)
题目大意:已知一个多边形上的每条边的中点,还原出来一个多边形. 分析:因为偶数是不固定的,所以可以为任意起点,奇数只有一个,可以所有中点加减算出来第一个点,然后就是简单的向量计算点的位置了...... ...
- jquery 手机 图片切换 例子 网址
http://m.swdhy.com/page/ShowCompany.aspx?cid=388481&name=山东潍坊金城服装有限公司
- 工厂模式 - 程序实现(java)
09年5月CSDN一网友提出如下问题: 设计一个用于管理银行客户的类BankCustomer: 仅描述客户的几个重要方面: 帐号.身份证号.姓名.联系方式.密码.账户余额. 所有的成员变量均用priv ...
- 如何vs升级后10和12都能同时兼容
如图: 项目2008解决方案sln文件升级2012后,都能同时使用. 升级办法:先复制vs2008版本的解决方案文件.升级2012后,再将文件复制到目录里面即可.注意升级过程中产生的升级文件(Upgr ...
- HDU 4288 线段树+离散化
题意: n个操作 在[1, 100000] 的区间上add 或del数( 必不会重复添加或删除不存在的数) sum 求出整个集合中 (下标%5 == 3 位置) 的数 的和 注意数据类型要64位 ...
- ColorComboBox
using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; u ...
- 史上最简单的带流控功能的http server
s.py import time import SimpleHTTPServer import SocketServer BYTES_PER_SECOND=160*1024 class MyHTTPR ...
- linux系统启动
在本文中,我们按电源按钮简要叙述,以便能够登录到系统,在此期间,系统和计算机硬件是如何一起工作.既作为自己整理知识的摘要,有可能linux0绍,高手请略过. 一般来说linux的启动能够分成三个阶段: ...