larken

勤奋的人生才有价值

导航

06 模型与数据库

6-1 构建模型
from django.db import models
# Create your models here.
# 创建产品分类表
class Type(models.Model):
    id = models.AutoField(primary_key=True)
    type_name = models.CharField(max_length=20)
# 创建产品信息表
class Product(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=50)
    weight = models.CharField(max_length=20)
    size = models.CharField(max_length=20)
    type = models.ForeignKey(Type, on_delete=models.CASCADE)
# 表6-1 表字段数据类型及说明
    # models.AutoField        默认生成一个名为id的字段并为int类型
    # models.CharField        字符串类型
    # models.BooleanField    布尔类型
# 表6-2 表字段参数及说明
    # Null        如为True,字段是否可以为空
    # Blank        如为True,设置在Admin站点管理中添加数据时可允许空值
    # Default    设置默认值、
    
6-2 数据表的关系
# 一对一关系:一个表的一行数据只与另一个表的另一行数据相关
class Performer(models.Model):
    id = models.IntegerField(primary_key=True)
    name = models.CharField(max_length=20)
    nationality = models.CharField(max_length=20)
    masterpiece = models.CharField(max_length=50)
class Performer_info(models.Model):
    id = models.IntegerField(primary_key=True)
    performer = models.OneToOneField(performer,on_delete=models.CASCADE)
    birth = models.CharField(max_length=20)
    elapse = models.CharField(max_length=20)
# 一对多关系:一个表的一行数据与另一个表的一到多行数据进行关联
class Performer(models.Model):
    id = models.IntegerField(primary_key=True)
    name = models.CharField(max_length=20)
    nationality = models.CharField(max_length=20)
class Program(models.Model):
    id = models.IntegerField(primary_key=True)
    performer = models.ForeignKey(Performer,on_delete=models.CASCADE)
    name = models.CharField(max_length=20)
# 多对多关系:一个表的一行数据与另一个表的一到多行数据进行关联,同时另一个表的一行数据与一个表的一到多行数据进行关联
class Performer(models.Model):
    id = models.IntegerField(primary_key=True)
    name = models.CharField(max_length=20)
    nationality = models.CharField(max_length=20)
class Program(models.Model):
    id = models.IntegerField(primary_key=True)
    name = models.CharField(max_length=20)
    performer = models.ManyToManyField(Performer)
    
6-3 数据表的读写
# 数据表的读写操作主要对数据进行增、删、改、查
    # 步骤(1)从models.py中导入模型Product
    # 步骤(2)对模型Product声明并实例化,生成对象p
    # 步骤(3)对对象p的属性逐一赋值
# 使用update方法实现单条或多条数据的更新
    # Product.objects.get(id=9).update(name='华为荣耀v9')  #更新单条数据
    # Product.objects.filter(name='荣耀v9).update(name='华为荣耀v9')    #更新多条数据
    # Product.objects.update(name='华为荣耀v9')        #全部数据更新
# 实现三种删除方式的代码如下:
    # Product.objects.all().delete()
    # Product.objects.get(id=1).delete()
    #Product.objects.filter(name='华为荣耀v9').delete()
    
6-4 多表查询

 

posted on 2019-03-20 01:04  larken  阅读(123)  评论(0编辑  收藏  举报