转: django数据库操作-增删改查-多对多关系以及一对多(外键)关系
2024-10-20 20:30:34
原文链接:http://blog.csdn.net/u010271717/article/details/22044415
一、一对多(外键)
例子:一个作者对应多本书,一本书只有一个作者
model代码:
- class Person(models.Model);
- name = models.CharField('作者姓名', max_length=10)
- age = models.IntegerField('作者年龄')
- class Book(models.Model):
- person = models.ForeignKey(Person, related_name='person_book')
- title = models.CharField('书籍名称', max_length=10)
- pubtime = models.DateField('出版时间')
(一)获取对象方法:
1.从作者出发获取书籍
- person = Person.objects.fiter(你的条件)
- book = person.book_set.all()
2.从书籍出发获取作者
- p = book.person
二、多对多
例子:一个作者对应多本书,一本书有多个作者
model代码:
- class Author(models.Model):
- first_name = models.CharField(max_length=30)
- last_name = models.CharField(max_length=40)
- email = models.EmailField()
- class Book(models.Model):
- title = models.CharField(max_length=200)
- authors = models.ManyToManyField(Author)
(一)获取对象方法:
1.从书籍出发获取作者
- b = Book.objects.get(id=50)
- b.authors.all()
- b.authors.filter(first_name='Adam')
2.从作者出发获取书籍
- a = Author.objects.get(id=1)
- a.book_set.all()
(二)添加对象方法:
- a = Author.objects.get(id=1)
- b = Book.objects.get(id=50)
- b.authors.add(a)
(三)删除对象对象方法:
- a = Author.objects.get(id=1)
- b = Book.objects.get(id=50)
- b.authors.remove(a) 或者 b.authors.filter(id=1).delete()
最新文章
- 计划参照mysql-proxy编写mssql-proxy
- 服务器间打通ssh无密钥
- 使用本地光盘安装Microsoft .NET Framework 3.5 for Win8/WinServer2012
- C++11的新特性lambda的小试牛刀RAII
- PowerShell常用的属性
- There is no getter for property named 'userSpAndSp' in 'class com.uauth.beans.UserSpAndSp'
- 基于Ubuntu12.04-server版的openstack F版搭建步骤
- JS框架设计读书笔记之-节点模块
- 【php增删改查实例】第二十六节 - 个人详情页制作
- C++ 容器:顺序性容器、关联式容器和容器适配器
- 用IBM MQ中间件开发碰到的MQRC_NOT_AUTHORIZED(2035)问题
- 源码安装php时出现configure: error: xml2-config not found. Please check your libxml2 installation
- php数据访问之查询关键字
- linux提权辅助工具(二):linux-exploit-suggester-2.pl
- 如何优化Java垃圾回收-zz
- ROS Navigation中的map_server地图包功能和使用
- MySQL----navicat for mysql(破解版)可视化数据库操作
- C++clock()延时循环
- Ubuntu16.04+Cuda8.0+1080ti+caffe+免OpenCV3.2.0+faster-rCNN教程
- java判断一个字符串中是否包含全角