django 学习-10 Django多对多关系模型

1、vim blog/models.py

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.ManyToMany(Author)

  def unicode(self):

    return self.name

2、python manage.py syncdb

sqlite3  cs.db

.tables;

3、python manage.py   shell

from blog.models import Author,Book

Author.objects.create(name=‘a1‘)
Author.objects.create(name=‘a2‘)

authors = Author.objects.all()

>>> authors
[<Author: a1>, <Author: a2>]
>>> b1 = Book()
>>> b1.name=‘book1‘
>>> b1.save()
>>> b1
<Book: book1>

a1 = Author.objects.get(name__exact=‘a1‘)

b1.authors.add(a1)

b1.authors.all()

b1.authors.remove(a1)

b1.authors.all()

b1.authors.filter(name__exact=‘a1‘)   做一个过滤

a1.book_set.add(b1)

a1.book_set.create(name=‘book2‘)

a1.book_set.all()

books = Book.objects.all()

books

a1.book_set.remove(books[0])   0是下标,表示把第一个删除

a1.book_set.all()

时间: 2024-07-28 20:42:56

django 学习-10 Django多对多关系模型的相关文章

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

[转]Django 一对多,多对多关系解析 Django 的 ORM 有多种关系:一对一,多对一,多对多. 各自定义的方式为 : 一对一: OneToOneField 多对一: ForeignKey 多对多: ManyToManyField 上边的描述太过数据而缺乏人性化,我们来更人性化一些: 多个属于一个,即 belong to :  ForeignKey,多个属于一个 一个有一个,即 has one: OneToOneField 一个有很多个,即 has many:  lots of A b

Django学习之django自带的contentType表

Django学习之django自带的contentType表 通过django的contentType表来搞定一个表里面有多个外键的简单处理: 摘自:https://blog.csdn.net/aaronthon/article/details/81714496 contenttypes 是Django内置的一个应用,可以追踪项目中所有app和model的对应关系,并记录在ContentType表中. models.py文件的表结构写好后,通过makemigrations和migrate两条命令

Flask框架之多对多关系模型类的定义

案例代码: table_relation = db.Table('stu_tea_rel', # 关系表明 db.Column('stu_id', db.Integer, db.ForeignKey('student.id')), # 多关系表的主键 db.Column('tea_id', db.Integer, db.ForeignKey('teacher.id'))) # 多关系表的主键 class Student(db.Model): id = db.Column(db.Integer,

Django 学习之Django Rest Framework(DRF)

一. WEB应用模式 在开发Web应用中,有两种应用模式 1. 前后端不分离 2. 前后端分离 二. API接口 为了在团队内部形成共识.防止个人习惯差异引起的混乱,我们需要找到一种大家都觉得很好的接口实现规范,而且这种规范能够让后端写的接口,用途一目了然,减少双方之间的合作成本. 目前市面上大部分公司开发人员使用的接口服务架构主要有:restful.rpc. 1. rpc rpc: 翻译成中文:远程过程调用[远程服务调用]. http://www.example.com/api post请求

Hibernate学习笔记(五) — 多对多关系映射

多对多关系映射 多对多建立关系相当于在第三张表中插入一行数据 多对多解除关系相当于在第三张表中删除一行数据 多对多修改关系相当于在第三张表中先删除后增加 多对多谁维护效率都一样.看需求 在实际开发过程中,多对多的映射关系比较常见. 学生选课示例,一个学生可以选多门课,一门课也可以由多个学生去选,这样就形成了多对多的映射关系 public class Student implements Serializable { private static final long serialVersionU

django 学习-11 Django模型数据模板呈现

1.for author in Author.objects.all(): for book in author.book_set.all(): print   book 2.vim blog/views.py from blog.models  import Author,Book from  django.shortcuts   import  render_to_response def show_author(req): authors = Author.objects.all() re

17.Django学习之django自带的contentType表

通过django的contentType表来搞定一个表里面有多个外键的简单处理: 摘自:https://blog.csdn.net/aaronthon/article/details/81714496 contenttypes 是Django内置的一个应用,可以追踪项目中所有app和model的对应关系,并记录在ContentType表中. models.py文件的表结构写好后,通过makemigrations和migrate两条命令迁移数据后,在数据库中会自动生成一个django_conten

[django学习0-1] django + eclipse基本环境

1.安装django 如果还没有安装python需要先安装python,django1.6对2.6,2.7,3.2或3.3都支持了,这里用的是python2.7.8 然后安装django,发布版本已更新至1.6.6,下载在https://www.djangoproject.com/ (如果已安装旧版需要先删掉旧版) 安装方法win下,先解压django包,然后运行python setup.py install 等待安装完就可以了(需要先设置python环境变量,setup.py在django解压

Hibernate双向多对多对象关系模型映射

1 双向many-to-many 业务模型: 描述员工和项目 一个员工同时可以参与多个项目 一个项目中可以包含多个员工 分析:数据库的数据模型,通过中间关系表,建立两个one-to-many构成many-to-many 1 create table emp 2 ( 3 eno int primary key auto_increment, 4 ename varchar 5 ); 6 create table project 7 ( 8 pid int primary key auto_incr