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 ...
随机推荐
- 【BZOJ 2594】【WC 2006】水管局长数据加强版
离线后倒过来做,这样就跟魔法森林差不多了,缩边为点就可以统计边的权值了. 1A真是爽,可惜常数炸上了天,这是滥用stl容器和无脑link,cut的后果 #include<map> #inc ...
- python之旅3
1 collections系列 方法如下 class Counter(dict): '''Dict subclass for counting hashable items. Sometimes ca ...
- 一起学HTML基础-利用CSS和JavaScript制作一个切换图片的网页
由于个人原因,不详细写步骤 思路: 一.布局 二.制作图片区和按钮区的div及颜色.边框.背景属性等 三.用PS将四张图片剪切到同一个尺寸,重叠放置在图片切换区,透明度设置为0 四.点击对应按钮时,将 ...
- springmvc上传图片并显示图片--支持多图片上传
实现上传图片功能在Springmvc中很好实现.现在我将会展现完整例子. 开始需要在pom.xml加入几个jar,分别是: <dependency> <groupId>comm ...
- 【bzoj3240】 Noi2013—矩阵游戏
http://www.lydsy.com/JudgeOnline/problem.php?id=3240 (题目链接) 题意$${F[1][1]=1}$$$${F[i][j]=a*F[i][j-1]+ ...
- Subime学习记录
一.快捷键 注:快捷键这种东西没有必要刻意去记,自己需要就去查查,经常用的自然熟了,关键是时刻保持提高效率的意识,才会主动去发现快捷键. 1.Ctrl + F:查找 2.F12:根据函数定位函数声明( ...
- git本地分支
1. 新建并切换到该分支 $ git checkout -b iss53 Switched to a new branch 'iss53' 相当于: $ git branch iss53$ git c ...
- Beta Daily Scrum 第五天
[目录] 1.任务进度 2.困难及解决 3.燃尽图 4.代码check-in 5.总结 1. 任务进度 学号 今日完成 明日完成 612 完成分享成就到朋友圈,查看当天成就 我的任务完成啦 615 写 ...
- POJ - 1511 Invitation Cards(Dijkstra变形题)
题意: 给定一个有向图,求从源点到其他各点的往返最短路径和.且这个图有一个性质:任何一个环都会经过源点. 图中的节点个数范围:0-100w; 分析: 我们先可以利用Dijkstra算法求解从源点到其余 ...
- Mysql学习笔记(七)mysql编程基础之自定义函数。
delimiter $$ create function fn_liangzifunction() returns int no sql begin ; return @row_no; end; $$ ...