django基础

6.models 增删改

2017-10-04  本文已影响0人  qy1994

为了看清楚 orm与sql语句的映射关系,在settings.py中增加如下的配置信息来实现 简单的输出数据库操作日志到控制台中的功能

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
        },
    },
    'loggers': {
        'django.db.backends': {
            'handlers': ['console'],
            'propagate': True,
            'level': 'DEBUG',
        },
    }
}

执行python manage.py shell命令 进行终端数据库操作
首先先导入模型类from hello.models import *

orm常用操作:

# objects是model默认的管理器
# create方法,是管理器的方法
Author.objects.create(name="张三")
# save方法,是model对象的方法
author = Author()
author.name = "李四"
author.save()
# 有主外键关联的字段既可以以字段名_id的形式添加也可以按照对象的形式添加
    # id的形式添加
    AuthorDetail.objects.create(sex=0, email="110@aa.com", address="福建省", birthday="1993-10-09", author_id=3)
    # 以对象的形式
    author = Author()
    author.name = "李四"
    author.save()
    AuthorDetail.objects.create(sex=1, email="220@aa.com", address="江苏省", birthday="2003-10-09", author=author)
# 多对多关系是一种特殊形式,他会多添加一张关系表,所以添加这种属性也是比较复杂的
    # 先创建除多对多关系外的字段,再调用字段的add方法添加 也行
        book = Book.objects.create(title="python", publisher_id=1, publication_date="2003-10-8")
        author = Author.objects.get(id=1)
        book.authors.add(author)

# save方法,get方法也是其中model对象的方法
    author = Author.objects.get(id=1)
    author.name = "jack"
    author.save()
# update方法,是querySet对象的方法
        Publisher.objects.filter(id=1).update(city="南京", website="www.china-new.cn")
    publisher = Publisher.objects.all()
    print(publisher)
# 惰性机制:
     # 注意这里的all方法并不会立即执行数据库查询,而只是返回了一个QuerySet的对象,当使用的时候才会调用QuerySet对象进行查询(比如print)
Author.objects.filter(name="李四").delete()
# delete是一种联级查询,即会先删除author 再删除authordetail中的数据,
# 还得删除 book_author表中的数据,即会删除所有有关联关联关系表中的数据
上一篇 下一篇

猜你喜欢

热点阅读