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. 浅谈HTTP请求头content-type

    请求消息和响应消息都可以包含实体信息,实体信息一般由实体头域和实体组成.实体头域包含关于实体的原信息,实体头包括Allow.Content- Base.Content-Encoding.Content ...

  2. 网络流HDU 2883

    建图           源点  ->     每个人  ->           每段时间      ->      汇点 时间要离散化一下 分成一些时间段 权           ...

  3. 51nod 1109 bfs

    给定一个自然数N,找出一个M,使得M > 0且M是N的倍数,并且M的10进制表示只包含0或1.求最小的M.   例如:N = 4,M = 100. Input 输入1个数N.(1 <= N ...

  4. CentOS6.5下搭建NFS文件服务器

    本文参考这里 CentOS下搭建NFS服务器总结 环境介绍: 1. 服务器: 192.168.0.100 2. 客户机: 192.168.0.101 安装软件包: 服务器和客户机都要安装nfs 和 r ...

  5. Handler消息机制与Binder IPC机制完全解析

    1.Handler消息机制 序列 文章 0 Android消息机制-Handler(framework篇) 1 Android消息机制-Handler(native篇) 2 Android消息机制-H ...

  6. 绑定: TemplateBinding 绑定, 与 RelativeSource 绑定, 与 StaticResource 绑定

    介绍背水一战 Windows 10 之 绑定 TemplateBinding 绑定 与 RelativeSource 绑定 与 StaticResource 绑定 示例1.演示 TemplateBin ...

  7. 【BZOJ-2453&2120】维护队列&数颜色 分块 + 带修莫队算法

    2453: 维护队列 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 653  Solved: 283[Submit][Status][Discuss] ...

  8. BZOJ 1064 假面舞会(NOI2008) DFS判环

    此题,回想Sunshinezff学长给我们出的模拟题,原题啊有木有!!此处吐槽Sunshinezff爷出题不人道!! 不过也感谢Sunshinezff学长的帮助,我才能做出来.. 1064: [Noi ...

  9. Jenkins实现生产环境部署文件的回滚操作(Windows)

    由于dotnet项目的生产环境环境部署工具比较少,所以我使用jenkins作为生产环境的自动化部署工具. 既然有回滚操作,那么就会有部署操作:要实现回滚,先要实现部署的操作,我在jenkins搭建了一 ...

  10. AutoIt3(AU3)开发的驱动备份工具

    项目相关地址 源码:https://github.com/easonjim/Backup_Driver bug提交:https://github.com/easonjim/Backup_Driver/ ...