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.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容 ...
随机推荐
- [SourceInsight].source insight 使用技巧
转自:https://www.veryarm.com/140428.html 1 开胃菜-初级应用 1.1 选择美丽的界面享受工作 虽然不能以貌取人,但似乎从来没有人责备以貌取软件的.SI的华丽界 ...
- Tomcat配置域名、ip访问及解决80端口冲突
1.先在tomcat下的conf下找到server.xml文件,用记事本打开后,首先对端口号进行修改,以前一直以为8080是默认的端口号,其实默认的端口号是80 <Connector port= ...
- 目标检测论文解读5——YOLO v1
背景 之前热门的目标检测方法都是two stage的,即分为region proposal和classification两个阶段,本文是对one stage方法的初次探索. 方法 首先看一下模型的网络 ...
- URI和URL的区别(转)
1说明: 这段时间写android的时候用到了URL和URI,有点分不清楚,于是做了一个系统性的学习.在这里将自己的学习笔记粘贴出来,希望对大家有帮助. 1)Java类库里有两个对应的类java.ne ...
- hbase与Hive的集成
1 HBase与Hive的对比 1.Hive (1) 数据仓库 Hive的本质其实就相当于将HDFS中已经存储的文件在Mysql中做了一个双射关系,以方便使用HQL去管理查询. (2) 用于数据分析. ...
- Helm 安装Nginx Ingress
为了便于将集群中的服务暴露到集群外部,需要使用Ingress.接下来使用Helm将Nginx Ingress部署到Kubernetes上. Nginx Ingress Controller被部署在Ku ...
- oc语言的特征
类型结构+运行时 内存管理:引用计数与析构 并发:gcd 函数式:block
- HDU6704 K-th occurrence
[传送门] 先求出SA和height.然后找到 rank[l] 的 height 值.能成为相同子串的就是和rank[l]的lcp不小于 $len$ 的.二分出左右端点之后,主席树求第k小即可. #i ...
- LeetCode 1249. Minimum Remove to Make Valid Parentheses
原题链接在这里:https://leetcode.com/problems/minimum-remove-to-make-valid-parentheses/ 题目: Given a string s ...
- rpm命令(转)
rpm -qa|grep mysql rpm命令是RPM软件包的管理工具.rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受 ...