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

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

class 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]: 

你可能感兴趣的:(django,mysql,python,orm,django)