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项目 一把我们都 ...
随机推荐
- .net cookie
HttpCookie HttpRequest HttpResponse 这3个 类 . 之间的关系 . 请求 ,相应 都有一个 public HttpCookieCollection Cooki ...
- Write the code.Change the world.---WWDC2014
- 超高性能的json序列化
超高性能的json序列化之MVC中使用Json.Net 超高性能的json序列化之MVC中使用Json.Net 先不废话,直接上代码 Asp.net MVC自带Json序列化 1 /// <su ...
- sql性能
---正在运行的 select a.username, a.sid,b.SQL_TEXT, b.SQL_FULLTEXT from v$session a, v$sqlarea b where a ...
- HTML5它contenteditable属性
HTML5它contenteditable属性 1.功能说明 (1)功能:同意用户编辑元素中的内容 (2)说明:是一个布尔值.false是不能编辑,true为可编辑 2.分析实例 (1)content ...
- Java程序单元测试工具对比——Parasoft Jtest与Junit
Web应用程序开发中,面向对象的Java语言占了不少的比重.对于Java应用程序的测试方法或方式多种多样,比较典型的是程序员自己来完成程序测试中的一个部分——单元测试. 之前,慧都资讯提到单元测试是程 ...
- View & ViewData
ViewData 似乎没啥好说的,一个向 View 传送数据的字典. ----------------------------------------------------------------- ...
- 如何查找Linux的函数定义的位置?
网上的许多站点提供这样的服务,如下面这个: http://lxr.free-electrons.com/ident?v=3.10 Linux的错误返回值:3.10版本 Linux/include/ua ...
- Apache2.4.x与Apache2.2.x的一些区别
改用Apache2.4一段时间了,一直没发现它和Apache2.2的有什么区别,一些基本配置都是差不多,直到前几天配置虚拟主机是才发现了一些小小的不同 一直以来我都是在htdocs目录下配置虚拟主机的 ...
- Android Intent 三解决
Intent的接收处理: 1.Receiver报名 这之前已经被引入 然后看看剩下的两个接收功能上面. scheduleReceiver scheduleRegisteredReceiver: sch ...