Django--基础知识点--models创建数据表

1 在models.py中编写表

例如:

from django.db import models
from django.contrib.auth.models import AbstractUser


class UserInfo(AbstractUser):
    """
    用户信息
    """
    nid = models.AutoField(primary_key=True)
    telephone = models.CharField(max_length=11, null=True, unique=True)
    avatar = models.FileField(upload_to='avatars/', default='/avatars/default.png')  # 上传文件
    create_time = models.DateTimeField(verbose_name='创建时间', auto_now_add=True)

    blog = models.OneToOneField(to='Blog', to_field='nid', null=True, on_delete=models.CASCADE)

    def __str__(self):
        return self.username


class Blog(models.Model):
    """
    博客信息表(站点表)
    """
    nid = models.AutoField(primary_key=True)
    title = models.CharField(verbose_name='个人博客标题', max_length=64)
    site_name = models.CharField(verbose_name='站点名称', max_length=64)
    theme = models.CharField(verbose_name='博客主题', max_length=32)

    def __str__(self):
        return self.title

2 修改setting.py文件

2.1 修改默认数据库

DATABASES = {
    # 'default': {
    #     'ENGINE': 'django.db.backends.sqlite3',
    #     'NAME': BASE_DIR / 'db.sqlite3',
    # }
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'cnblog',
        'USER': 'root',
        'PASSWORD': '******',
        'HOST': 'xxxxxxxxxx',
        'PORT': xxxx   # 端口号是数值,不是字符串
    }
}

2.2

若在models.py中某个类继承了AbstractUser类,需要在settings.py中添加一行代码如下:

AUTH_USER_MODEL = "blog.UserInfo"

3 将MySQLdb API 修改为PyMySQL API

MySQLdb只支持到python2,不支持python3

做如下修改,在与settings.py相同目录的__init__.py文件中加入以下代码

import pymysql

pymysql.install_as_MySQLdb()

4 创建数据库

在命令行下进入mysql,使用以下命令创建数据库

# cnblog为数据库名
mysql > create cnblog 

5 创建表

进入项目目录执行以下命令

# 生成一个数据库迁移记录的文件,保存在migrations目录下
python manage.py makemigrations
# 将真正提交到数据库执行
python manage.py migration

补充:

# 展示迁移的sql语句
python manage.py sqlmigrate app01 0001_xx  
# 项目的迁移及其状态
python manage.py showmigrations 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值