原文链接:http://blog.csdn.net/u010271717/article/details/22044415

一、一对多(外键)

例子:一个作者对应多本书,一本书只有一个作者

model代码:

  1. class Person(models.Model);
  2. name = models.CharField('作者姓名', max_length=10)
  3. age = models.IntegerField('作者年龄')
  4. class Book(models.Model):
  5. person = models.ForeignKey(Person, related_name='person_book')
  6. title = models.CharField('书籍名称', max_length=10)
  7. pubtime = models.DateField('出版时间')

(一)获取对象方法:

1.从作者出发获取书籍

  1. person = Person.objects.fiter(你的条件)
  2. book = person.book_set.all()

2.从书籍出发获取作者

  1. p = book.person

二、多对多

例子:一个作者对应多本书,一本书有多个作者

model代码:

  1. class Author(models.Model):
  2. first_name = models.CharField(max_length=30)
  3. last_name = models.CharField(max_length=40)
  4. email = models.EmailField()
  5. class Book(models.Model):
  6. title = models.CharField(max_length=200)
  7. authors = models.ManyToManyField(Author)

(一)获取对象方法:

1.从书籍出发获取作者

  1. b = Book.objects.get(id=50)
  2. b.authors.all()
  3. b.authors.filter(first_name='Adam')

2.从作者出发获取书籍

  1. a = Author.objects.get(id=1)
  2. a.book_set.all()

(二)添加对象方法:

  1. a = Author.objects.get(id=1)
  2. b = Book.objects.get(id=50)
  3. b.authors.add(a)

(三)删除对象对象方法:

  1. a = Author.objects.get(id=1)
  2. b = Book.objects.get(id=50)
  3. b.authors.remove(a) 或者 b.authors.filter(id=1).delete()

最新文章

  1. 计划参照mysql-proxy编写mssql-proxy
  2. 服务器间打通ssh无密钥
  3. 使用本地光盘安装Microsoft .NET Framework 3.5 for Win8/WinServer2012
  4. C++11的新特性lambda的小试牛刀RAII
  5. PowerShell常用的属性
  6. There is no getter for property named 'userSpAndSp' in 'class com.uauth.beans.UserSpAndSp'
  7. 基于Ubuntu12.04-server版的openstack F版搭建步骤
  8. JS框架设计读书笔记之-节点模块
  9. 【php增删改查实例】第二十六节 - 个人详情页制作
  10. C++ 容器:顺序性容器、关联式容器和容器适配器
  11. 用IBM MQ中间件开发碰到的MQRC_NOT_AUTHORIZED(2035)问题
  12. 源码安装php时出现configure: error: xml2-config not found. Please check your libxml2 installation
  13. php数据访问之查询关键字
  14. linux提权辅助工具(二):linux-exploit-suggester-2.pl
  15. 如何优化Java垃圾回收-zz
  16. ROS Navigation中的map_server地图包功能和使用
  17. MySQL----navicat for mysql(破解版)可视化数据库操作
  18. C++clock()延时循环
  19. Ubuntu16.04+Cuda8.0+1080ti+caffe+免OpenCV3.2.0+faster-rCNN教程
  20. java判断一个字符串中是否包含全角

热门文章

  1. 优先队列 STL (转)
  2. 1044: [HAOI2008]木棍分割
  3. 解析Linux系统的平均负载概念
  4. fabric查看本地与远程主机信息
  5. 【bzoj3170】[Tjoi2013]松鼠聚会(数学题)
  6. python测试函数的使用时间
  7. Eclipse的编码格式设置
  8. 浅谈 django Models中的跨表
  9. Django1.11 的serializers序列化model
  10. 数据库连接池 c3p0 druid