Django入门4 数据库设计
创建mxonline虚拟环境
C:\Users\ws>mkvirtualenv mxonline
(mxonline) D:\python\djangostart>pip install MySQL_python-1.2.5-cp27-none-win_amd64.whl
修改settings.py配置
创建mxonline数据库
生成django默认表
Makemigrations
migrate
新建users app
编写users的model
- # _*_ encoding:utf-8 _*_
- from __future__ import unicode_literals
- from django.db import models
- from django.contrib.auth.models import AbstractBaseUser
- # Create your models here.
- class UserProfile(AbstractBaseUser): # 利用django的默认user表扩展我们的user表
- nick_name = models.CharField(max_length=50, verbose_name=u"昵称", default='')
- birthday = models.DateField(verbose_name=u"生日", null=True, blank=True)
- gender = models.CharField(max_length=5, choices=(("male","男"),("female","女")), default="femaile")
- address = models.CharField(max_length=100,default=u"")
- mobile = models.CharField(max_length=11, null = True,blank=True)
- image = models.ImageField(upload_to="image/%Y/%m",default=u"image/default.png", max_length=100)
- # 要加如下两行,否则会报错 AttributeError: type object 'UserProfile' has no attribute 'USERNAME_FIELD'
- identifier = models.CharField(max_length=40, unique=True)
- USERNAME_FIELD = 'identifier'
- class Meta:
- verbose_name = "用户信息"
- verbose_name_plural = verbose_name
- def __unicode__(self):
- return self.username
- manage.py@mxonline > makemigrations users
- manage.py@mxonline > migrate users
新建课程app course app
manage.py@mxonline > startapp courses
编写课程models
course/models.py
- # _*_ coding:utf-8 _*_
- from __future__ import unicode_literals
- from datetime import datetime
- from django.db import models
- # Create your models here.
- class Course(models.Model):
- name = models.CharField(max_length=50, verbose_name=u"课程名")
- desc = models.CharField(max_length=300, verbose_name=u"课程描述")
- detail = models.TextField(verbose_name=u"课程详情")
- degree = models.CharField(choices=(("cj","初级"),("zj","中级"),("gj","高级")), max_length=2)
- learn_time = models.IntegerField(default=0, verbose_name=u"学习时长(分钟数)")
- students = models.IntegerField(default=0, verbose_name=u"学习人数")
- fav_nums = models.IntegerField(default=0, verbose_name=u"收藏")
- image = models.ImageField(upload_to="courses/%Y/%m", verbose_name=u"封面图", max_length=100)
- click_nums = models.IntegerField(default=0, verbose_name=u"点击数")
- add_time = models.DateTimeField(default=datetime.now, verbose_name=u"添加时间")
- class Meta:
- verbose_name = u"课程"
- verbose_name_plural = verbose_name
- class Lesson(models.Model):
- course = models.ForeignKey(Course, verbose_name=u"课程")
- name = models.CharField(max_length=100, verbose_name=u'章节名')
- add_time = models.DateTimeField(default=datetime.now, verbose_name=u"添加时间")
- class Meta:
- verbose_name = u"章节"
- verbose_name_plural = verbose_name
- class Video(models.Model):
- lesson = models.ForeignKey(Lesson, verbose_name=u'章节')
- name = models.CharField(max_length=100, verbose_name=u'视频名称')
- add_time = models.DateTimeField(default=datetime.now, verbose_name=u"添加时间")
- class Meta:
- verbose_name = u"视频"
- verbose_name_plural = verbose_name
- class CourseResource(models.Model):
- course = models.ForeignKey(Course, verbose_name=u'课程')
- name = models.CharField(max_length=100, verbose_name=u'名称')
- download = models.FileField(upload_to = "course/resource/%Y/%m", verbose_name=u'资源文件', max_length=100)
- add_time = models.DateTimeField(default=datetime.now, verbose_name=u"添加时间")
- class Meta:
- verbose_name = u"课程资源"
- verbose_name_plural = verbose_name
新建组织app
manage.py@mxonline > startapp organization
新建操作app
manage.py@mxonline > startapp operation
写好各个models后,进行settings.py配置
生成表
manage.py@mxonline > makemigrations
manage.py@mxonline > migrate
此时会在每个app下面生成0001_inital.py
可以看到django生成的表是app+app里面的class全部小写拼接而成
我们建的app比较多,为了便于管理,我们在项目目录下新建apps包,把users,course,ogranaziton和operation拖入apps中
把apps加入到编辑器的resource root
- Settings.py中配置加入到搜索目录
- sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))
这样在命令行下就可以正常运行了
Django入门4 数据库设计的更多相关文章
- Django入门-基本数据库API
# 现在系统里还没有 Question 对象 >>> Question.objects.all() <QuerySet []> # 创建新 Question # 在 se ...
- Django入门:操作数据库(Model)
Django-Model操作数据库(增删改查.连表结构) 一.数据库操作 1.创建model表 基本结构 1 2 3 4 5 6 from django.db import model ...
- 使用django开发博客过程记录1——数据库设计
1.数据库设计 2.插入测试数据 3.配置相关问题 1.数据库设计 数据库有简单的三张表:Article.Category.Tag以下是代码 # -*- coding:utf-8 -*- from _ ...
- Django数据库设计中字段为空的方式
今天在做数据库设计的时候,设计了如下User表,其中我把email和phone字段设置为允许为空: class User(models.Model): username = models.CharFi ...
- Django 博客项目01 数据库设计与验证码校验+Ajax登录
数据库设计 from django.db import models from django.contrib.auth.models import AbstractUser class UserInf ...
- django文件上传、图片验证码、抽屉数据库设计
1.Django文件上传之Form方式 settings.py, ALLOWED_HOSTS = ['*'] INSTALLED_APPS = [ 'django.contrib.admin', 'd ...
- Django 小实例S1 简易学生选课管理系统 1 项目流程梳理与数据库设计
Django 小实例S1 简易学生选课管理系统 第1章--项目流程梳理与数据库设计 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 1 项目流程梳理 ...
- SpringSecurity 3.2入门(8)自定义权限控制数据库设计
; -- ---------------------------- -- Table structure for t_system_authority_info -- ---------------- ...
- Django 入门
Django 入门 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的软件设计模型,即模型M,视图V和控制器C.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容 ...
随机推荐
- Socket网络编程-IO各种概念及多路复用
Socket网络编程-IO各种概念及多路复用 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.操作系统相关知识 1>.同步和异步 函数或方法被调用的时候,调用者是否得到最 ...
- ShareSDK For Unity集成
Mob ShareSDK Android - V2.7.10 iOS - V3.5.0 Mob下载:https://github.com/MobClub/New-Unity-For-ShareSDK ...
- AtCoder Beginner Contest 136
AtCoder Beginner Contest 136 题目链接 A - +-x 直接取\(max\)即可. Code #include <bits/stdc++.h> using na ...
- Jmeter中Switch Controller逻辑控制器用法
当Switch Controller中Switch Value设置为0时,执行第0+1个子节点:Switch Value设置为1时,执行第1+1个子节点:Switch Value设置为2时,执行第2+ ...
- MATLAB问题小集合
1.未定义与 'struct' 类型的输入参数相对应的函数 'tb_optparse' 在运行matlab程序时,出现上述错误. 原因是tb_optparse在common文件夹里面,没在robot文 ...
- CRAP-API——如何在Linux服务器部署CRAP-API教程
前言 之前一直用的eolinker的免费版,但是人数有限,所以想找个免费开源的API管理平台,然后就选择了CRAP-API. 步骤 部署环境 LNMT部署 我的环境是之前部署的是LNMP,后面又增加的 ...
- MySQL中经典的too many connection怎么破
文章来源:云栖社区,经同意授权转载 链接:https://yq.aliyun.com/articles/226984?spm=5176.8091938.0.0.nCksaV 错误解决记录:java d ...
- Async/await promise实现
An async function can contain an await expression that pauses the execution of the async function an ...
- 金融类openapi
股市URL解析 http://money.finance.sina.com.cn/moneyflow/?stockName=上证指数&symbol=sh000001&stockSymb ...
- 2018南京区域赛K题 Kangaroo Puzzle——随机&&乱搞
题意 在 n * m 的平面上有若干个袋鼠和墙(1为袋鼠,0为墙),每次可以把所有袋鼠整体往一个方向移动一步(不能走出边界和不能走到墙),为在不超过50000步的情况下能否把全部袋鼠聚集在同一个位置. ...