当前位置: 代码迷 >> 综合 >> django2.0使用orm操控多对多关系的增删查改
  详细解决方案

django2.0使用orm操控多对多关系的增删查改

热度:32   发布时间:2024-02-02 16:27:11.0

本博文源于django基础操作,旨在演示django下orm对mysql多对多关系模型的基础操作。完成本实验前,可参考此博文的基础配置可参考此博文,简单易操作。
django从零基础配置settings.py
里面包含:

  • django运行成功
  • 资源路径配置,链接App,注释csrf的操作

其中资源路径可不配置,外加链接mysql数据库。

DATABASES = {'default': {'ENGINE':'django.db.backends.mysql', # 统一规定'NAME':'test', # 需要自己创建数据库,然后将名字写在上面'HOST':'127.0.0.1', # 一般为固定套路'PORT':3306, # 固定套路'USER':'root', # 自身的user'PASSWORD':'123456', # 自身的password}
}

下面开始本实验。

实验步骤

  • 创建models.py里的Account表和Contact的表,其中在一张表中创建ManyToMany
  • 命令模式下生成数据库,并产生数据库迁移文件
  • 对数据表进行简单的增删查改

实验具体内容

创建models.py下的两张数据表

# Create your models here.
class Account(models.Model):user_name = models.CharField(max_length=80)def __str__(self):return "Account: %s"%self.user_nameclass Contact(models.Model):accounts = models.ManyToManyField(Account)mobile = models.CharField(max_length=20)def __str__(self):return "%s, %s"%(self.account.user_name,self.mobile)

生成数据库,并产生数据库迁移文件

python manage.py makemigrations
python manage.py migrate

命令行下简单的数据库级联操作

python manage.py shell

ORM操作

新增数据字段,添加关系

In [1]: from app01 import models # 导入app01应用In [2]: a1 = models.Account.objects.create(user_name='Leon') # In [3]: a1.save()In [4]: c1 = models.Contact.objects.create(mobile='13456789')In [5]: c1.save()In [6]: c1.accounts.add(a1)In [7]: a2 = models.Account.objects.create(user_name='Terry')In [8]: a2.save()In [9]: a2.contact_set.add(c1)In [10]: a3 = models.Account.objects.create(user_name='Terry')In [11]: a3.contact_set.add(c1)

查询Account数据表中所有字段

In [15]: models.Account.objects.all()
Out[15]: <QuerySet [<Account: Account: Leon>, <Account: Account: Terry>, <Account: Account: Terry>]>In [16]: 

修改Account数据表中user_name信息

In [18]: models.Account.objects.filter(user_name='Leon').update(user_name='zhangsan')
Out[18]: 1

删除数据级联中关系

In [12]: a1.contact_set.remove(c1)In [13]: a1.contact_set.clear()In [14]: 
  相关解决方案