liberty配置mysql数据源_Django学习笔记(六)--models与mysql数据库接入

在django项目的开始首先就是数据库的设计,这次不用django默认的sqlite数据库,使用mysql数据库,首先要接入mysql数据库

要接入mysql首先要有mysql驱动,python3 :pip install mysqlclient

python2:mysqldb,注意,这是个大坑

在setting.py

DATABASES = {

'default': {

'ENGINE': 'django.db.backends.mysql',

'NAME': 'data',

'USER':'root',

'PASSWORD':'root',

'HOST':'127.0.0.1',

}这里修改数据库密码,由于是mysql,所以要先创建数据库data

接下来点击run,跑一下项目,就可以在mysql中看到默认生成的表(真的是好方便,人生苦短,我用django)

6922af1e2c97aaa38147f2d03de836f7.png

接下来创建app

步骤:

命令行中进入 manage.py同级目录

执行python manage.py startapp app名(可选)

然后编写我们app的models

这里我们使用django默认的user(上图默认创建的auth_user表)来拓展我们的业务,通过继承它,来使用它的表里面设计好的内容

56b91c8ef5630dfa929d7d2d526e46b8.png

这里要导入django的AbstractUser模块,通过继承该类,添加你需要的属性

from django.db import models

from datetime import datetime

from django.contrib.auth.models import AbstractUser

class UserProfile(AbstractUser):

nick_name = models.CharField(max_length=50, verbose_name='昵称', default='')

birthday = models.DateField(null=True, blank=True, verbose_name='生日')

gender = models.CharField(max_length=6, choices=(('male', '男'), ('female', '女')), default='female',

verbose_name='性别')

address = models.CharField(max_length=100, default='', verbose_name='地址')

mobile = models.CharField(max_length=11, null=True, blank=True, verbose_name='手机号')

image = models.ImageField(max_length=100, upload_to='image/%Y/%m', default='image?default.png', verbose_name='头像')

class Meta:

verbose_name = '用户信息'

verbose_name_plural = verbose_name

def __str__(self):

return self.username

编写好后,在setting中添加app,这里添加user

INSTALLED_APPS = [

'django.contrib.admin',

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

'user',

]

这里要创建我们的衍生表(

UserProfile

)还要在setting中添加一条代码

INSTALLED_APPS = [

'django.contrib.admin',

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

'user',

]

AUTH_USER_MODEL = "user.UserProfile"通过这条AUTO_USER_MODEL 的代码就可以创建userProfile表

然后提交我们的models,

命令行中进入 manage.py同级目录

执行python manage.py makemigratetions app名(可选)

在执行python manage.py migrate

就能看到我们的UserProfile衍生表

6810bd501899bfc3ed99d7296a5c366d.png

这里是利用了我们django的默认user模板,省写了很多代码,熟练以后挺方便的,一般的models只要继承models的Model就行了

class Course(models.Model):

pass

使用mysql关系库就是因为因为各表之间有关系,表与表有主要一对多的关系,

那么如何实现一对多的关系呢?

下面通过course(课程表)与lesson(章节表)为例,一个课程对应多个章节,是一对多的关系,

只要在多的一方(lesson表)添加course的外键就行

class Course(models.Model):

name = models.CharField(max_length=52, verbose_name='课程名字')

desc = models.CharField(max_length=300, verbose_name='课程描述')

detail = models.TextField(verbose_name='课程详情')

degree = models.CharField(choices=(('cj', '初级'), ('zj', '中级'), ('gj', '高级')), max_length=2, verbose_name='难度')

class Meta:

verbose_name = '课程'

verbose_name_plural = verbose_name

# 章节信息

class Lesson(models.Model):

course = models.ForeignKey(Course, verbose_name='课程')

name = models.CharField(max_length=100, verbose_name='章节名')

add_time = models.DateTimeField(default=datetime.now, verbose_name='添加时间')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值