django model Foreign key usage 关系型数据库 ORM
django
的模型
from django.db import models
"""
A model pair to map car and its manufacturer
""" class Manufacturer(models.Model):
brand = models.CharField(max_length=100)
location = models.CharField(max_length=100) def __unicode__(self):
return self.brand class Meta:
ordering = ["brand"] class Car(models.Model):
owner = models.CharField(max_length=100)
volume = models.CharField(max_length=100)
manufacturer = models.ForeignKey('Manufacturer')
is_active = models.BooleanField(default=True) def __unicode__(self):
return self.owner class Meta:
ordering = ["owner"]
每个车只有一个车主,每个车来自与只有一个工厂。可是这个工厂确有很多车。
先用的django 生成数据表 python manage.py syncdb (P.S. python manage.py validate 是用来查看数据库模型是否有问题的选项的 ,挺有用的)
这样看一下就明白了

其实可以先固定几款车型,这样,很多人都可以同时指向一款车了,比如说,大家都买了了上面对象 m2 的车,或者m3的车。
django帮你自动搞定,这些数据库操作。ForeignKey非常爽的用的说。
简单来说,django 里面 属性如果设置成了 manufacturer = models.ForeignKey('Manufacturer') 了的话,
新建该有ForeignKey属性的 对象的时候, 这个属性要是一个 该ForeignKey的 class 对象实例。 很科学!
其实感觉就如同这样:
>>> m3 = Manufacturer(brand="BMW", location="Germany")
>>> m3.save()
>>> lily = Car(owner = "Lily", volume = "1.4T", manufacturer = m3)
>>> lily.save()
>>> lily.manufacturer
<Manufacturer: BMW>
>>> lily.manufacturer = m2
>>> lily.save()
>>> lily.manufacturer
<Manufacturer: Toyota>
>>> lily.manufacturer.location
'Japan'
神奇之处
django model Foreign key usage 关系型数据库 ORM的更多相关文章
- Node的关系型数据库ORM库:bookshelf
NodeJs 关系数据库ORM库:Bookshelf.js bookshelf.js是基于knex的一个关系型数据库的ORM库.简单易用,内置了Promise的支持.这里主要罗列一些使用的例子,例子就 ...
- django model改变后,同步数据库
在使用django进行开发时,往往需要根据不同的需求对model进行更改.而这时候,python manage.py syncdb就不好使了. 目前有个很好的工具,是south,这个是专门用来更改mo ...
- SQLServer之FOREIGN KEY约束
FOREIGN KEY约束添加规则 1.外键约束并不仅仅可以与另一表的主键约束相链接,它还可以定义为引用另一个表中 UNIQUE 约束的列. 2.如果在 FOREIGN KEY 约束的列中输入非 NU ...
- 关系型数据库中主键(primary key)和外键(foreign key)的概念。
刚接触关系型数据库的同学,会听过主键和外键的概念.这是关系型数据库的基本概念,需要清楚理解.今天我就以简洁的语言总结一下这个概念. 主键.一句话概括:一张表中,可以用于唯一标识一条记录的字段组(或者说 ...
- Django之 数据库ORM
一.ORM Django的 业务 少不了 跟数据库打交道,不然没有数据库保存一些数据将是一件很糟糕的事情.Django 对 数据库 支持原生的 SQL语句,但更好的对数据库支持,Django自己有一套 ...
- django之数据库orm
一.数据库的配置 1 django默认支持sqlite,mysql, oracle,postgresql数据库. <1>sqlite django默认使用sqlite的数据库,默认自带sq ...
- 03: Django Model数据库操作
目录:Django其他篇 01:Django基础篇 02:Django进阶篇 03:Django数据库操作--->Model 04: Form 验证用户数据 & 生成html 05:Mo ...
- 02:django model数据库操作
Django其他篇 目录: 1.1 Django中使用MySQL 1.2 创建表 1.3 Django一对多表结构操作 1.4 Django多对多表结构操作 1.5 一大波Model操作 1.6 Mo ...
- Django中的app及mysql数据库篇(ORM操作)
Django常见命令 在Django的使用过程中需要使用命令让Django进行一些操作,例如创建Django项目.启动Django程序.创建新的APP.数据库迁移等. 创建Django项目 一把我们都 ...
随机推荐
- angularJS看MVVM
从angularJS看MVVM javascript厚积薄发走势异常迅猛,导致现在各种MV*框架百家争雄,MVVM从MVC演变而来,为javascript注入了全新的活力.我工作的业务不会涉及到a ...
- Python_生成測试数据
本文出自:http://blog.csdn.net/svitter 生成1~10的随机数1000个: import random fp = open("test", 'w'); f ...
- Installshield 64位操作系统下拷贝文件,如何重定向到32位的系统文件夹下
原文:Installshield 64位操作系统下拷贝文件,如何重定向到32位的系统文件夹下 64位操作系统下拷贝文件重定向问题,在在复制代码前加上Disable(WOW64FSREDIRECTION ...
- JDK动态代理机制
JDK Proxy OverView jdk的动态代理是基于接口的.必须实现了某一个或多个随意接口才干够被代理.并且仅仅有这些接口中的方法会被代理. 看了一下jdk带的动态代理api,发现没有样例实在 ...
- 让Windows 8 / 8.1 以及 Windows Server 2012 / 2012 R2的任务管理器的性能面板,显示磁盘数据
运行[diskperf -y],关闭任务管理器,重新打开即可.
- ArcGIS课程:表面数据转换成矢量数据
虽然TIN (TIN) 和 terrain 数据收集被认为是载体表面.但它们实际上包括基于其他信息元素.并且该信息是在图象点.线或多边形原始格这可能是更实用的公式.在 ArcGIS 在,你可以很容易的 ...
- Linux多命令顺序运行
- ASP.NET MVC创建的网站
ASP.NET MVC创建的网站 最近在写一个网站,昨天刚写完,由于要和朋友一起测试,但是他电脑上没有环境,所以希望我在自己电脑上部署一下,让他直接通过浏览器来访问来测试,所以从昨晚到今天上午,通 ...
- Mvc 导出 Excel
Mvc 导出 Excel 之前接触过Webform,winfrom 的导出Excel方法 ,优点:省事.缺点:服务器必须安装Office 这几天做项目 和 大牛学习了一下 新的方法,自己加以总结.希望 ...
- 记第五届山东省ACM程序设计比赛——遗憾并非遗憾
记第五届山东省ACM程序设计比赛 5月10日上午9点半左右,我们的队伍从学校出发,一个多小时后到达本次比赛的地点-哈尔滨工业大学. 报道,领材料,吃午饭,在哈工大的校园里逛了逛,去主楼的自习室歇息了一 ...