美文网首页django基础
6.models 增删改

6.models 增删改

作者: qy1994 | 来源:发表于2017-10-04 14:46 被阅读0次

    为了看清楚 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常用操作:

    • 增加--create和save方法:
    # 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和update方法
    # 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")
    
    • 查询-- all
        publisher = Publisher.objects.all()
        print(publisher)
    # 惰性机制:
         # 注意这里的all方法并不会立即执行数据库查询,而只是返回了一个QuerySet的对象,当使用的时候才会调用QuerySet对象进行查询(比如print)
    
    • 删除 -- delete
    Author.objects.filter(name="李四").delete()
    # delete是一种联级查询,即会先删除author 再删除authordetail中的数据,
    # 还得删除 book_author表中的数据,即会删除所有有关联关联关系表中的数据
    

    相关文章

      网友评论

        本文标题:6.models 增删改

        本文链接:https://www.haomeiwen.com/subject/wgccyxtx.html