飞行的猪哼哼

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

一:数据库的准备操作:
1:创建数据库:

mysql -uroot -pmysql
create database django_demo default charset=utf8;

2:配置数据库:
修改setting:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'HOST': '192.168.103.240',  # 数据库主机
        'PORT': 3306,  # 数据库端口
        'USER': 'root',  # 数据库用户名
        'PASSWORD': 'mysql',  # 数据库用户密码
        'NAME': 'django_demo'  # 数据库名字
    }
}

3:安装MySQL数据库的客户端驱动:
先进入虚拟环境:
然后安装客户端驱动:

pip install mysqlclient==1.4.6 -i https://pypi.tuna.tsinghua.edu.cn/simple/

二:模型类迁移建表:
1:定义模型类:
模型类被定义在子应用/models.py文件中
模型类必须继承自Model类,位于django.db.models中
创建子应用booktest,并在其models.py文件中定义模型类

注意:数据库的键对应模型类的类属性,所以不能定义在方法内部。

class BookInfo(models.Model):
    """图书信息:演示一对多,一方"""
    btitle = models.CharField(max_length=20, verbose_name='书名')
    bpub_date = models.DateField(verbose_name='发布日期')
    bread = models.IntegerField(default=0, verbose_name='阅读量')
    bcomment = models.IntegerField(default=0, verbose_name='评论量')
    is_delete = models.BooleanField(default=False, verbose_name='逻辑删除')

    class Meta:
        """模型类的元类:用于修改、配置模型类对应的数据表"""
        db_table = 'tb_books'  # 自定义数据库表名

    def __str__(self):
        """定义每个数据对象的显示信息"""
        return self.btitle # 输出该模型数据对象时,只输出书名


class HeroInfo(models.Model):
    """英雄信息:演示一对多,多方"""
    # 确定性别字段的取值范围
    GENDER_CHOICES = (
        (0, 'female'),
        (1, 'male')
    )
    hbook = models.ForeignKey(BookInfo, on_delete=models.CASCADE, verbose_name='英雄属于的图书')
    hname = models.CharField(max_length=20, verbose_name='人名')
    hgender = models.SmallIntegerField(choices=GENDER_CHOICES, default=0, verbose_name='性别')
    hcomment = models.CharField(max_length=200, null=True, verbose_name='描述信息')
    is_delete = models.BooleanField(default=False, verbose_name='逻辑删除')

    class Meta:
        db_table = 'tb_heros'

    def __str__(self):
        return self.hname

2:模型类的说明:
2.1:主键:
Django会为表创建自动增长的主键列,每个模型只能有一个主键列
默认创建的主键列属性为id,可以使用pk代替,pk全拼为primary key
如果使用选项设置某属性为主键列后Django不会再创建自动增长的主键列
2.2:不能是python的保留关键字
不允许使用连续的下划线,这是由Django的查询方式决定的
定义属性时需要指定字段类型,通过字段类型的参数指定选项,语法如下。
2.3:数据库表名:
模型类如果未指明表名,Django默认以 小写app应用名_小写模型类名 为数据库表名
但是,可通过模型的元类中的db_table自定义数据库表名
2.4:字段类型:
在这里插入图片描述
2.5字段选项:
在这里插入图片描述
2.6:关于外键:
在这里插入图片描述
2.7:生成迁移文件,同步到数据库。

python manage.py makemigrations
python manage.py migrate
posted on 2020-08-27 22:45  飞行的猪哼哼  阅读(46)  评论(0)    收藏  举报