本博文源于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]: