django orm 多对多自定义第三张表】的更多相关文章

# -*- coding: utf-8 -*-# Generated by Django 1.11.11 on 2018-09-02 08:07from __future__ import unicode_literals from django.conf import settingsfrom django.db import migrations, modelsimport django.db.models.deletion class Migration(migrations.Migrat…
自定义第三张表的好处:可以定义多个字段, 缺点:查询不方便(有方法解决) 1.第三张表设置外键,联合唯一(查询不方便) class Books(models.Model): name=models.CharField(max_length=32) price=models.DecimalField(max_digits=6,decimal_places=2)class Zuozhes(models.Model): name=models.CharField(max_length=32) sex=…
杂交(自定义第三张表+ManyToManyField) # modles.py class Boy(models.Model): name = models.CharField(max_length=32) class Girl(models.Model): name = models.CharField(max_length=32) m = models.ManyToManyField('Boy',through='Love',through_fields=('b','g')) # 只让其生成…
一.inclusion_tag 1.作用 用于生成HTML片段,是数据由参数传入而变成动态 2.使用 # 1.app下新建一个模块,templatetags # 2.创建一个py文件(mytag.py) # 3.导入Library模块,实例化 from django.template import Library register=Library() # -----> register名字一定不能变 # 4.写装饰器(标签,过滤器,inclusion_tag) @inclusion_tag('模…
目录 补充:inclusion_tag.defer.only.choice.事务.创建多对多的第三张表 一.inclusion_tag 1.作用 2.使用 二.defer与only 1.定义 2.使用 3.注意点 三.事务 1.原子性操作 2.语法 四.choice 1.定义 2.使用 五.多对多创建第三张表 1.多对多的操作 2.三种方法创建第三张表 补充:inclusion_tag.defer.only.choice.事务.创建多对多的第三张表 一.inclusion_tag 1.作用 用于…
一.第一种:纯自动创建第三张表 纯自动 class Book(models.Model): title = models.CharField(max_length=32) price = models.DecimalField(max_digits=8, decimal_places=2) authors = models.ManyToManyField(to='Author') class Author(models.Model): name = models.CharField(max_le…
一..基于双下划线的跨表查询(join实现) key:正向查询按字段,反向查询按表明小写 1.一对多跨表查询 查询在跨表中可以有两种方式,正向查询就是关键字段在你要搜索的表,没有关键字段就是反向查询 跨表查询的显著特点是__双下划线,这道题中在你要找到name,但是Book中没有,通过正向查询关键字段+__来 跨表找到name ret=Book.objects.filter(title="python").values("publish__name") # prin…
1 图书管理系统图书修改 1.1 views 修改图书获取id的两种方案 1 <input type="hidden" name="id" value="{{ book.nid }}"> 2 <form action="/update_book/?id={{ book.nid }}" method="post">{% csrf_token %} 1.2 路由urls 1.3 前端模板…
多对多的三种方式: ORM 自动创建第三张表 自己创建第三张表, 利用外键分别关联作者和书,关联查询比较麻烦,因为没办法使用 ORM 提供的便利方法 自己创建第三张表,使用 ORM 的 ManyToManyFiled(),使用此种方式创建多对多表的时候,没有 add() remove() 等方法 适用方法: 如果第三张表没有额外的字段,就用第一种 如果第三张表有额外的字段,就用第三种或第一种 方法二: models.py: from django.db import models # 书 cla…
话不多说,来看表结构 这里有两个表,一个是阶段表,一个是老师表,一个老师可以带多个阶段,一个阶段也可以由多个老师带,所以是多对多关系 # 阶段表 class Stage(models.Model): name=models.CharField( max_length=20, verbose_name='阶段名称' ) def __str__(self): return self.name class Meta: verbose_name_plural='阶段' # 教师表 class Teach…