创建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

  1. # _*_ encoding:utf-8 _*_
  2. from __future__ import unicode_literals
  3.  
  4. from django.db import models
  5. from django.contrib.auth.models import AbstractBaseUser
  6.  
  7. # Create your models here.
  8.  
  9. class UserProfile(AbstractBaseUser): # 利用django的默认user表扩展我们的user表
  10. nick_name = models.CharField(max_length=50, verbose_name=u"昵称", default='')
  11. birthday = models.DateField(verbose_name=u"生日", null=True, blank=True)
  12. gender = models.CharField(max_length=5, choices=(("male","男"),("female","女")), default="femaile")
  13. address = models.CharField(max_length=100,default=u"")
  14. mobile = models.CharField(max_length=11, null = True,blank=True)
  15. image = models.ImageField(upload_to="image/%Y/%m",default=u"image/default.png", max_length=100)
  16.  
  17. # 要加如下两行,否则会报错 AttributeError: type object 'UserProfile' has no attribute 'USERNAME_FIELD'
  18. identifier = models.CharField(max_length=40, unique=True)
  19. USERNAME_FIELD = 'identifier'
  20.  
  21. class Meta:
  22. verbose_name = "用户信息"
  23. verbose_name_plural = verbose_name
  24.  
  25. def __unicode__(self):
  26. return self.username
  1. manage.py@mxonline > makemigrations users
  2. manage.py@mxonline > migrate users

新建课程app course app

manage.py@mxonline > startapp courses

编写课程models

course/models.py

  1. # _*_ coding:utf-8 _*_
  2. from __future__ import unicode_literals
  3. from datetime import datetime
  4.  
  5. from django.db import models
  6.  
  7. # Create your models here.
  8.  
  9. class Course(models.Model):
  10. name = models.CharField(max_length=50, verbose_name=u"课程名")
  11. desc = models.CharField(max_length=300, verbose_name=u"课程描述")
  12. detail = models.TextField(verbose_name=u"课程详情")
  13. degree = models.CharField(choices=(("cj","初级"),("zj","中级"),("gj","高级")), max_length=2)
  14. learn_time = models.IntegerField(default=0, verbose_name=u"学习时长(分钟数)")
  15. students = models.IntegerField(default=0, verbose_name=u"学习人数")
  16. fav_nums = models.IntegerField(default=0, verbose_name=u"收藏")
  17. image = models.ImageField(upload_to="courses/%Y/%m", verbose_name=u"封面图", max_length=100)
  18. click_nums = models.IntegerField(default=0, verbose_name=u"点击数")
  19. add_time = models.DateTimeField(default=datetime.now, verbose_name=u"添加时间")
  20.  
  21. class Meta:
  22. verbose_name = u"课程"
  23. verbose_name_plural = verbose_name
  24.  
  25. class Lesson(models.Model):
  26. course = models.ForeignKey(Course, verbose_name=u"课程")
  27. name = models.CharField(max_length=100, verbose_name=u'章节名')
  28. add_time = models.DateTimeField(default=datetime.now, verbose_name=u"添加时间")
  29.  
  30. class Meta:
  31. verbose_name = u"章节"
  32. verbose_name_plural = verbose_name
  33.  
  34. class Video(models.Model):
  35. lesson = models.ForeignKey(Lesson, verbose_name=u'章节')
  36. name = models.CharField(max_length=100, verbose_name=u'视频名称')
  37. add_time = models.DateTimeField(default=datetime.now, verbose_name=u"添加时间")
  38.  
  39. class Meta:
  40. verbose_name = u"视频"
  41. verbose_name_plural = verbose_name
  42.  
  43. class CourseResource(models.Model):
  44. course = models.ForeignKey(Course, verbose_name=u'课程')
  45. name = models.CharField(max_length=100, verbose_name=u'名称')
  46. download = models.FileField(upload_to = "course/resource/%Y/%m", verbose_name=u'资源文件', max_length=100)
  47. add_time = models.DateTimeField(default=datetime.now, verbose_name=u"添加时间")
  48.  
  49. class Meta:
  50. verbose_name = u"课程资源"
  51. 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

  1. Settings.py中配置加入到搜索目录
  2. sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))

这样在命令行下就可以正常运行了

Django入门4 数据库设计的更多相关文章

  1. Django入门-基本数据库API

    # 现在系统里还没有 Question 对象 >>> Question.objects.all() <QuerySet []> # 创建新 Question # 在 se ...

  2. Django入门:操作数据库(Model)

    Django-Model操作数据库(增删改查.连表结构) 一.数据库操作 1.创建model表         基本结构 1 2 3 4 5 6 from django.db import model ...

  3. 使用django开发博客过程记录1——数据库设计

    1.数据库设计 2.插入测试数据 3.配置相关问题 1.数据库设计 数据库有简单的三张表:Article.Category.Tag以下是代码 # -*- coding:utf-8 -*- from _ ...

  4. Django数据库设计中字段为空的方式

    今天在做数据库设计的时候,设计了如下User表,其中我把email和phone字段设置为允许为空: class User(models.Model): username = models.CharFi ...

  5. Django 博客项目01 数据库设计与验证码校验+Ajax登录

    数据库设计 from django.db import models from django.contrib.auth.models import AbstractUser class UserInf ...

  6. django文件上传、图片验证码、抽屉数据库设计

    1.Django文件上传之Form方式 settings.py, ALLOWED_HOSTS = ['*'] INSTALLED_APPS = [ 'django.contrib.admin', 'd ...

  7. Django 小实例S1 简易学生选课管理系统 1 项目流程梳理与数据库设计

    Django 小实例S1 简易学生选课管理系统 第1章--项目流程梳理与数据库设计 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 1 项目流程梳理 ...

  8. SpringSecurity 3.2入门(8)自定义权限控制数据库设计

    ; -- ---------------------------- -- Table structure for t_system_authority_info -- ---------------- ...

  9. Django 入门

    Django 入门 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的软件设计模型,即模型M,视图V和控制器C.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容 ...

随机推荐

  1. Socket网络编程-IO各种概念及多路复用

    Socket网络编程-IO各种概念及多路复用 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.操作系统相关知识 1>.同步和异步  函数或方法被调用的时候,调用者是否得到最 ...

  2. ShareSDK For Unity集成

    Mob ShareSDK Android - V2.7.10 iOS - V3.5.0 Mob下载:https://github.com/MobClub/New-Unity-For-ShareSDK ...

  3. AtCoder Beginner Contest 136

    AtCoder Beginner Contest 136 题目链接 A - +-x 直接取\(max\)即可. Code #include <bits/stdc++.h> using na ...

  4. Jmeter中Switch Controller逻辑控制器用法

    当Switch Controller中Switch Value设置为0时,执行第0+1个子节点:Switch Value设置为1时,执行第1+1个子节点:Switch Value设置为2时,执行第2+ ...

  5. MATLAB问题小集合

    1.未定义与 'struct' 类型的输入参数相对应的函数 'tb_optparse' 在运行matlab程序时,出现上述错误. 原因是tb_optparse在common文件夹里面,没在robot文 ...

  6. CRAP-API——如何在Linux服务器部署CRAP-API教程

    前言 之前一直用的eolinker的免费版,但是人数有限,所以想找个免费开源的API管理平台,然后就选择了CRAP-API. 步骤 部署环境 LNMT部署 我的环境是之前部署的是LNMP,后面又增加的 ...

  7. MySQL中经典的too many connection怎么破

    文章来源:云栖社区,经同意授权转载 链接:https://yq.aliyun.com/articles/226984?spm=5176.8091938.0.0.nCksaV 错误解决记录:java d ...

  8. Async/await promise实现

    An async function can contain an await expression that pauses the execution of the async function an ...

  9. 金融类openapi

    股市URL解析 http://money.finance.sina.com.cn/moneyflow/?stockName=上证指数&symbol=sh000001&stockSymb ...

  10. 2018南京区域赛K题 Kangaroo Puzzle——随机&&乱搞

    题意 在 n * m 的平面上有若干个袋鼠和墙(1为袋鼠,0为墙),每次可以把所有袋鼠整体往一个方向移动一步(不能走出边界和不能走到墙),为在不超过50000步的情况下能否把全部袋鼠聚集在同一个位置. ...