• 第四章 Django模型


    一、数据库配置

    在settings.py中配置DATABASE,如:

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        }
    }

    ENGINE:数据库驱动引擎

    NAME:数据库名称

    二、创建django应用

    python manage.py startapp books

    三、使用python定义模型

    django模型是使用pthon代码对数据库中数据的描述,是数据结构,相当与SQL语句中的create table

    四、创建模型

    一个类对应一张数据库表,属性名称等于字段名与数据类型

    from django.db import models

    class Publisher(models.Model):
    name = models.CharField(max_length=30)
    address = models.CharField(max_length=50)
    city =models.CharField(max_length=60)
    state_province = models.CharField(max_length=30)
    country = models.CharField(max_length=50)
    website = models.URLField()

    class Author(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=40)
    email = models.EmailField()

    class Books(models.Model):
    title = models.CharField(max_length=100)
    authors = models.ManyToManyField(Author)
    publisher = models.ForeignKey(Publisher,on_delete=models.CASCADE)
    publication = models.DateField()

    1、检查模型:python manage.py check

    出现以下情况为模型检查成功:System check identified no issues (0 silenced).

    2、告诉django已对模型进行修改,也就是迁移

    python manage.py makemigrations books

    3、查看上一步迁移操作运行的sql

    python manage.py sqlmigrate books 00001

    其中0001是迁移时生成的文件编号

    4、创建表

    python manage.py migrate

    五、数据访问

    1、增

    方法1:使用关键字创建模型的实例,再调用save()方法

    from books.models import Publisher
    p1 = Publisher(name='Ben',address='gd',city='sz',state_province='gd',country='cn',website='http://www.baidu.com')
    p1.save()

    方法2:

    p1 = Publisher.objects.create(name='Ben12',address='gd12',city='sz21',state_province='g2d1',country='1cn',website='http://www.1baidu.com')

    2、删

    删除部分数据

    Publisher.objects.filter(country='cn').delete()

    删除全部数据

    Publisher.objects.all().delete()

    3、改

    全部字段修改

    P=Publisher.objects.get(name='Ben')
    p.address='US'
    p.save()
    
    #对其他字段也update

    对单一字段修改

    Publisher.objects.filter(id=2).update(name='Ben4')
    
    #只对id=2的name字段update

    4、查

    查看所有记录

    Publisher.objects.all()

    条件查询

    Publisher.objects.filter(name='Ben')

    模糊查询,like语句

    Publisher.objects.filter(name__contains='Ben')
    
    #类似 where name like '%Ben%'

    查找单个对象,出现多个时报错

    Publisher.objects.get(address='gd')

    5、排序

    Publisher.objects.order_by('name')
    #按字段name排序
    Publisher.objects.order_by('-name')
    #按字段name反向排序

    6、链式查找

    Publisher.objects.filter(country='cn').order_by('-name')
    
    #where country='cn' order by name desc

    7、切片

    相当与limit

    Publisher.objects.order_by('name')[0]
    
    #limit 1
  • 相关阅读:
    HDU 5795
    HDU5783
    HDU 5791
    VK Cup 2016
    Codeforces Round #357 (Div. 2)
    Educational Codeforces Round 15
    HDU5724
    博弈学习 3
    Spring的多配置文件加载
    spring 核心技术
  • 原文地址:https://www.cnblogs.com/wenwu5832/p/11892896.html
Copyright © 2020-2023  润新知