一:数据库的准备操作:
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
浙公网安备 33010602011771号