Django笔记-数据库操作(多对多关系)
1、项目结构

2、关键代码:
data6.settings.py
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog',
) DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'data6',
'USER':'root',
'PASSWORD':'passwd',
'PORT':'',
'HOST':'localhost',
}
}
blog.models.py
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=30)
def __unicode__(self):
return self.name class Book(models.Model):
name = models.CharField(max_length=30)
authors = models.ManyToManyField(Author)
def __unicode__(self):
return self.name
3、自动生成的数据表

4、Django通过shell进行的操作:
首先导入models里创建的对象:
>>> from blog.models import Author,Book
添加author:
>>> Author.objects.create(name='Tom01')
<Author: Tom01>
>>> Author.objects.create(name='Tom02')
<Author: Tom02>
>>> Author.objects.create(name='Tom03')
<Author: Tom03>
>>> Author.objects.create(name='Tom04')
<Author: Tom04>
查看生成的author:
>>> authors = Author.objects.all()
>>> authors
[<Author: Tom01>, <Author: Tom02>, <Author: Tom03>, <Author: Tom04>]
添加一本书Python book1
>>> b1 = Book()
>>> b1.name = 'Pyhon book1'
>>> b1.save()
获取一个作者
>>> tom2 = Author.objects.get(name__exact='Tom02')
>>> tom2
<Author: Tom02>
为Python book1添加作者
>>> b1.authors.add(tom2)
>>> b1.authors.add(authors[3])
b1的作者
>>> b1.authors.all()
[<Author: Tom02>, <Author: Tom04>]
>>> b1.authors.add(authors[2])
去掉一个作者
>>> b1.authors.remove(authors[3])
>>> b1.authors.all()
[<Author: Tom02>]
>>> b1.authors.add(authors[0])
>>> b1.authors.all()
[<Author: Tom01>, <Author: Tom02>]
>>> b1.authors.filter(name__exact='Carl')
[]
查看tom2有那些书
>>> tom2.book_set.all()
[<Book: Pyhon book1>]
为tom2添加一本书
>>> tom2.book_set.create(name="java")
<Book: java>
>>> tom2.book_set.all()
[<Book: Pyhon book1>, <Book: java>]
查看都有那些书
>>> books = Book.objects.all()
>>> books
[<Book: Pyhon book1>, <Book: java>]
去掉一本书
>>> tom2.book_set.remove(books[0])
>>> tom2.book_set.all()
[<Book: java>]
Django笔记-数据库操作(多对多关系)的更多相关文章
- Django 2.0 学习(16):Django ORM 数据库操作(下)
Django ORM数据库操作(下) 一.增加表记录 对于表单有两种方式: # 方式一:实例化对象就是一条表记录france_obj = models.Student(name="海地&qu ...
- Django 2.0 学习(14):Django ORM 数据库操作(上)
Django ORM 数据库操作(上) ORM介绍 映射关系: 数据库表名 ---------->类名:数据库字段 ---------->类属性:数据库表一行数据 ----------&g ...
- django models 数据库操作
django models 数据库操作 创建模型 实例代码如下 from django.db import models class School(models.Model): pass class ...
- Django 一对多,多对多关系解析
[转]Django 一对多,多对多关系解析 Django 的 ORM 有多种关系:一对一,多对一,多对多. 各自定义的方式为 : 一对一: OneToOneField ...
- Django与数据库操作
Django与数据库操作 数据库连接的方法 web 框架 django --- 自己内部实现 (ORM) + pymysql(连接) Flask,tornado --- pymysql SQLArch ...
- Django模型-数据库操作
前言 前边记录的URLconf和Django模板全都是介绍页面展示的东西,也就是表现层的内容.由于Python先天具备简单而强大的数据库查询执行方法,Django 非常适合开发数据库驱动网站. 这篇开 ...
- django中数据库操作——in操作符
django一对多关系中,为了实现按照一端查询多端,之前都是用extra操作符,经过查看官方文档还有in这个操作符,用这个实现更简单.直接上代码: 根据查询条件模糊查询所有符合条件的机架列表,然后根据 ...
- django models数据库操作
一.数据库操作 1.创建model表 基本结构 1 2 3 4 5 6 from django.db import models class userinfo(models.M ...
- 03: Django Model数据库操作
目录:Django其他篇 01:Django基础篇 02:Django进阶篇 03:Django数据库操作--->Model 04: Form 验证用户数据 & 生成html 05:Mo ...
随机推荐
- 浅谈HTTP请求头content-type
请求消息和响应消息都可以包含实体信息,实体信息一般由实体头域和实体组成.实体头域包含关于实体的原信息,实体头包括Allow.Content- Base.Content-Encoding.Content ...
- 网络流HDU 2883
建图 源点 -> 每个人 -> 每段时间 -> 汇点 时间要离散化一下 分成一些时间段 权 ...
- 51nod 1109 bfs
给定一个自然数N,找出一个M,使得M > 0且M是N的倍数,并且M的10进制表示只包含0或1.求最小的M. 例如:N = 4,M = 100. Input 输入1个数N.(1 <= N ...
- CentOS6.5下搭建NFS文件服务器
本文参考这里 CentOS下搭建NFS服务器总结 环境介绍: 1. 服务器: 192.168.0.100 2. 客户机: 192.168.0.101 安装软件包: 服务器和客户机都要安装nfs 和 r ...
- Handler消息机制与Binder IPC机制完全解析
1.Handler消息机制 序列 文章 0 Android消息机制-Handler(framework篇) 1 Android消息机制-Handler(native篇) 2 Android消息机制-H ...
- 绑定: TemplateBinding 绑定, 与 RelativeSource 绑定, 与 StaticResource 绑定
介绍背水一战 Windows 10 之 绑定 TemplateBinding 绑定 与 RelativeSource 绑定 与 StaticResource 绑定 示例1.演示 TemplateBin ...
- 【BZOJ-2453&2120】维护队列&数颜色 分块 + 带修莫队算法
2453: 维护队列 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 653 Solved: 283[Submit][Status][Discuss] ...
- BZOJ 1064 假面舞会(NOI2008) DFS判环
此题,回想Sunshinezff学长给我们出的模拟题,原题啊有木有!!此处吐槽Sunshinezff爷出题不人道!! 不过也感谢Sunshinezff学长的帮助,我才能做出来.. 1064: [Noi ...
- Jenkins实现生产环境部署文件的回滚操作(Windows)
由于dotnet项目的生产环境环境部署工具比较少,所以我使用jenkins作为生产环境的自动化部署工具. 既然有回滚操作,那么就会有部署操作:要实现回滚,先要实现部署的操作,我在jenkins搭建了一 ...
- AutoIt3(AU3)开发的驱动备份工具
项目相关地址 源码:https://github.com/easonjim/Backup_Driver bug提交:https://github.com/easonjim/Backup_Driver/ ...