Django 多对多关系的增删改查

目录

  • Django多对多数据增删改查

    • 1.表结构及基本方法
    • 2.查
    • 3.增
    • 4.改

Django多对多数据增删改查

1.表结构及基本方法

1.表结构

# models.py
class Book(models.Model):
    author = models.ManyToMany(to='author', relate_name='author')
    """
    ...字段
    """

class author(models.Model):
    """
    ...字段
    """

2.基本方法

# 增、删、改
add() # 增加
remove() # 删除表,只删一条数据
clear() # 清空表, 把所有关系的表全部清空 例如 book_obj.author.clear() 表示把当前书籍对象的所有作者全部清空

2.查

# views.py

# 获取主键id值为1的图书对象
book_obj = models.Book.object.filter(pk=1).first()

# 通过图书对象获取该图书对象下的所有作者
all_author = book_obj.author.all()  # 这里的author字段是建表时候的字段名

# 结果为类似列表的querry_set列表对象

3.增

# views.py
author_list = [1, 2, 3, 4]
# 获取当前新增的图书对象
book_obj = models.Book.objects.create(
            title=123,
            price=123,
            publish=123,
        )

# 通过当前新增的图书对象在多对多关系表中添加对应关系字段
book_obj.author.add(*author_list)
# save()方法保存
book_obj.save()

# add()方法可以接收一个值,也可以用逗号隔开接收多个值

4.改

# views.py

# 修改图书作者为下方列表
author_list = [1, 2, 3, 4]

# 获取当前修改的图书对象
book_obj = models.Book.objects.filter(pk=1).first()

# 先清除当前图书的所有作者再添加
book_obj.author.clear()
book_obj.author.add(*authors_list)
book_obj.save()

原文地址:https://www.cnblogs.com/17vv/p/11723372.html

时间: 2024-07-29 08:06:32

Django 多对多关系的增删改查的相关文章

hibernate多对多关系配置--增删改查

hibernate多对多关联配置--并实现增删改查 hibernate就不多介绍了,这里就直接上我项目中使用的例子做说明. 数据模型 这是项目中用户和用户组的数据模型er图草稿,具体的model对象字段就以项目中的为主了. model类以及pojo接口,这里pojo接口用不上,大家测试的时候也可以去掉 package com.supre.model; import java.io.Serializable; import java.util.Set; public class User { pr

双向多对一关系的增删改查

Person类: package com.bjsxt.hibernate; import java.util.List; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.ManyToOne; @Entity publ

Django 自带的ORM增删改查

通过Django来对数据库进行增删改查 1 首先创建类,在app应用程序里面的model模块里面创建类,写好数据库信息,方便我们待会初始化: 2 创建在django项目里面的settings里面添加app程序()在settings里面的INSTALLED_APPS里面) 3  python manage.py makemigrations     python manage.py migrate 拿models里面的一个类举例: class WebGroup(models.Model): nam

基于表关系的增删改查

创建四表,author,book,publish,author-detail 存在多对多,一对一,多对一的关系 在models里创建 class Pulish(models.Model): id=models.AutoField(primary_key=True) name=models.CharField(max_length=32) address=models.CharField(max_length=32) class Book(models.Model): id=models.Auto

初识django之orm布置与增删改查

1.数据库驱动:给database--->data source下载对应数据库的驱动. 2.数据库工具包:py2.0支持MySQLdb(),但是py3中MySQLdb()已经不能完全适用,需要置换,毕竟orm底层上还是基于关于数据库操作的py工具包,请先确保已经下载好了pymysql,在项目文件夹下的__init__.py下添加: import pymysql pymysql.install_as_MySQLdb() 3.数据库连接设置:在settings.py里配置数据库连接信息:DATABA

Python 集合的各种操作 数学运算 关系操作 增删改查 生成式

# 集合是无序的 是可变的 不能重复 允许数学运算 分散存储 # 创建# collegel = {'哲学','经济学','法学','教育学'}## # {'教育学', '经济学', '法学', '哲学'}# print(collegel)## # set# collegel2 = set(['金融学','哲学','经济学','法学','教育学'])# print(collegel2)## # 使用set创建字符串集合# collegel3 = set('中华人民共和国')# # {'共', '华

django中对数据库的增删改查

Django的配置文件时settings.py中的 TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')], 只修改这一个 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.d

Django项目7 单表增删改查

1. import django,osos.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dj_test.settings')django.setup() from user.models import Category,Article#增 # c_obj = Category.objects.create(name="Mysql1")#新增数据# print(c_obj.name)# print(c_obj.create_time)# p

多对多表的增删改查与drf的分页

目录 类的约束 面向对象的继承 处理 多对多实列 查询 单条或多条 增加 编辑 更新 总结 分页器 为什么要使用分页 方式1 方式2 方式3 分页的另一种方式 分页出现的警告问题 了解 总结 类的约束 继承 必须继续 定义 不然报错 # 约束子类中必须实现f1 class Base(object): def f1(self): raise NotImplementedError('必须要定义此规则') class Foo(Base): def f1(self): print(123) obj =