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笔记-数据库操作(多对多关系)的更多相关文章

  1. Django 2.0 学习(16):Django ORM 数据库操作(下)

    Django ORM数据库操作(下) 一.增加表记录 对于表单有两种方式: # 方式一:实例化对象就是一条表记录france_obj = models.Student(name="海地&qu ...

  2. Django 2.0 学习(14):Django ORM 数据库操作(上)

    Django ORM 数据库操作(上) ORM介绍 映射关系: 数据库表名 ---------->类名:数据库字段 ---------->类属性:数据库表一行数据 ----------&g ...

  3. django models 数据库操作

    django models 数据库操作 创建模型 实例代码如下 from django.db import models class School(models.Model): pass class ...

  4. Django 一对多,多对多关系解析

    [转]Django 一对多,多对多关系解析   Django 的 ORM 有多种关系:一对一,多对一,多对多. 各自定义的方式为 :        一对一: OneToOneField         ...

  5. Django与数据库操作

    Django与数据库操作 数据库连接的方法 web 框架 django --- 自己内部实现 (ORM) + pymysql(连接) Flask,tornado --- pymysql SQLArch ...

  6. Django模型-数据库操作

    前言 前边记录的URLconf和Django模板全都是介绍页面展示的东西,也就是表现层的内容.由于Python先天具备简单而强大的数据库查询执行方法,Django 非常适合开发数据库驱动网站. 这篇开 ...

  7. django中数据库操作——in操作符

    django一对多关系中,为了实现按照一端查询多端,之前都是用extra操作符,经过查看官方文档还有in这个操作符,用这个实现更简单.直接上代码: 根据查询条件模糊查询所有符合条件的机架列表,然后根据 ...

  8. django models数据库操作

    一.数据库操作 1.创建model表         基本结构 1 2 3 4 5 6 from django.db import models     class userinfo(models.M ...

  9. 03: Django Model数据库操作

    目录:Django其他篇 01:Django基础篇 02:Django进阶篇 03:Django数据库操作--->Model 04: Form 验证用户数据 & 生成html 05:Mo ...

随机推荐

  1. Linux_Shell_grep

    grep [选项] "搜索内容"  文件名 选项列表: -i 忽略大小写      -n 输出行号 -v 反向查找 --color=auto 搜索出的关键字用颜色显示   ll|g ...

  2. python 进程间共享数据 (二)

    Python中进程间共享数据,除了基本的queue,pipe和value+array外,还提供了更高层次的封装.使用multiprocessing.Manager可以简单地使用这些高级接口. Mana ...

  3. mysql解决无法远程客户端连接

    1. 改表法.可能是你的帐号不允许从远程登陆,只能在localhost.这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 " ...

  4. 运行python代码报错UnicodeDecodeError: 'ascii' codec can't decode byte 0xe7 in position 91: ordinal not in range(128)的解决办法

    1.通过搜集网上的资料,自己多次尝试,问题算是解决了,在代码中加上如下几句即可: import sys reload(sys) sys.setdefaultencoding('utf-8') 2.原因 ...

  5. Cell右滑的动作状态

    //允许cell可以进行编辑 - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)index ...

  6. [bzoj4408][Fjoi2016]神秘数

    Description 一个可重复数字集合$S$的神秘数定义为最小的不能被$S$的子集的和表示的正整数. 例如$S={1,1,1,4,13}$, $1=1$, $2=1+1$, $3=1+1+1$, ...

  7. 【BZOJ-4514】数字配对 最大费用最大流 + 质因数分解 + 二分图 + 贪心 + 线性筛

    4514: [Sdoi2016]数字配对 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 726  Solved: 309[Submit][Status ...

  8. 【poj3017】 Cut the Sequence

    http://poj.org/problem?id=3017 (题目链接) 题意 给出一个数列要求将它分割成许多块,每块的数的和不超过m,要求每块中最大的数之和最小. Solution 这道题真的很不 ...

  9. Jenkins 1.x权限配置(兼容2.x)

    说明: 1.x版本的jenkins默认是没有任何权限限制,任何人都可以访问. 需要用到的插件: [Role-based Authorization Strategy] 具体配置: 0.设置Jenkin ...

  10. [NOIP2013] 提高组 洛谷P1970 花匠

    题目描述 花匠栋栋种了一排花,每株花都有自己的高度.花儿越长越大,也越来越挤.栋栋决定 把这排中的一部分花移走,将剩下的留在原地,使得剩下的花能有空间长大,同时,栋栋希 望剩下的花排列得比较别致. 具 ...