模型

1 字段类型

  • BooleanField() 布尔类型
  • CharField() 字符串类型
  • DateField() 日期类型
  • DateTimeField() 时间日期类型
  • DecimalField() 金融常用浮点类型
  • EmailField() 邮件类型 带判断
  • FloatField() 浮点类型
  • ImageField() 文件类型,存储图片路径
    • upload_to=’给相对路径(static/xx/xx)’ 会自动创建没有的文件夹
  • IntergerField()整数类型
  • URLField() 网址类型
  • TextField() 存大量文本数据的 – text

2 字段选项

  • null=true

    • 指定当前字段是否允许为空
    • 默认值是false
  • default=0
    • 为当前字段指定默认值
  • db_index=true 设置索引
  • max_length
    • 指定数据的最大长度
    • 在CharField()中必须设置的选项
  • on_delete
    • django2中的ForeignKey必选字段
    • on_delete=models.CASCADE

创建Author表

# 作者 Author:name age email
class Author(models.Model): name = models.CharField(max_length=32) age = models.PositiveSmallIntegerField() email = models.EmailField() 
Python
Copy

创建Book表

# 图书 Book:title publicate_date
class Book(models.Model): title = models.CharField(max_length=32) publicate_date = models.DateField(auto_now=True) 
Python
Copy

同步数据到数据库

  • python manage.py makemigrations
  • python manage.py migrate

练习:晚上天天生鲜美食表

  • 完善生鲜美食的表
  • 商品类型
    • 类型名称 title
    • 类型图片 picture
    • 默认上传至static/upload/goodstype
    • 类型描述 desc
  • 商品实体
    • 图片 picture(FileField)
    • 默认上传至static/upload/goods
    • 名称 name
    • 价格 price(DecimalField)
    • 产品规格 spec
    • 销售状态(在售,下架) isActive(BooleanField 默认值为true)
  • 用户实体 Users
    • 电话号码 uphone
    • 密码 upwd
    • 邮件 uemail
    • 用户名 uname
    • 用户状态 isActive 默认为True

商品类型表

class GoodsType(models.Model): title = models.CharField(max_length=32) picture = models.FileField(upload_to='static/upload/goodstype') 
Python
Copy

商品表

class Goods(models.Model): name = models.CharField(max_length=32) price = models.DecimalField(max_digits=5, decimal_places=2) spec = models.CharField(max_length=32) picture = models.FileField(upload_to='static/upload/goods') isActive = models.BooleanField(default=True) 
Python
Copy

用户表

class Users(models.Model): uphone = models.CharField(max_length=11) upwd = models.CharField(max_length=68) uemail = models.EmailField(null=True) uname = models.CharField(max_length=32) isActive = models.BooleanField(default=True) 
Python
Copy

数据的版本切换问题

  • python manage.py migrate

    • 执行所有应用中最新版本的数据库中间文件
  • python manage.py migrate 应用名称 版本号
    • 执行某应用某版本中的中间文件
    • 版本号是0001这样的数字,数字后面的不用管

通过数据库自动导出Models

  • python manage.py inspectdb > 文件名.py

    • 将数据库中的表全部导入到指定的文件

数据库自动导出测试结果

from __future__ import unicode_literalsfrom django.db import models class AuthGroup(models.Model): name = models.CharField(unique=True, max_length=80) class Meta: managed = False db_table = 'auth_group' class AuthGroupPermissions(models.Model): group = models.ForeignKey(AuthGroup, models.DO_NOTHING) permission = models.ForeignKey('AuthPermission', models.DO_NOTHING) class Meta: managed = False db_table = 'auth_group_permissions' unique_together = (('group', 'permission'),) class AuthPermission(models.Model): name = models.CharField(max_length=255) content_type = models.ForeignKey('DjangoContentType', models.DO_NOTHING) codename = models.CharField(max_length=100) class Meta: managed = False db_table = 'auth_permission' unique_together = (('content_type', 'codename'),) class AuthUser(models.Model): password = models.CharField(max_length=128) last_login = models.DateTimeField(blank=True, null=True) is_superuser = models.IntegerField() username = models.CharField(unique=True, max_length=150) first_name = models.CharField(max_length=30) last_name = models.CharField(max_length=30) email = models.CharField(max_length=254) is_staff = models.IntegerField() is_active = models.IntegerField() date_joined = models.DateTimeField() class Meta: managed = False db_table = 'auth_user' class AuthUserGroups(models.Model): user = models.ForeignKey(AuthUser, models.DO_NOTHING) group = models.ForeignKey(AuthGroup, models.DO_NOTHING) class Meta: managed = False db_table = 'auth_user_groups' unique_together = (('user', 'group'),) class AuthUserUserPermissions(models.Model): user = models.ForeignKey(AuthUser, models.DO_NOTHING) permission = models.ForeignKey(AuthPermission, models.DO_NOTHING) class Meta: managed = False db_table = 'auth_user_user_permissions' unique_together = (('user', 'permission'),) class 

转载于:https://www.cnblogs.com/gao_x/p/10509370.html

Django笔记(四)相关推荐

  1. Django 笔记6 -- 多表查询

    Django 笔记6 – 多表查询 Django 系列笔记是笔者学习.实践使用 Django 的相关笔记,大量参考了知了课堂的<Django零基础到项目实战>教程. 参考文档: Djang ...

  2. Django 笔记3 -- URL

    Django 笔记3 – URL Django 系列笔记是笔者学习.实践使用 Django 的相关笔记,大量参考了知了课堂的<Django零基础到项目实战>教程. 参考文档: Django ...

  3. Django笔记总结

    1.web框架的本质 web通信流程 web我们这里指的就是通过浏览器去访问服务端,请求页面或者数据的通信方式,属于B/S架构.就是我们常见的网站.浏览器与服务端的通信流程:浏览器客户端发送一个请求信 ...

  4. Django笔记二十八之数据库查询优化汇总

    这一篇笔记将从以下几个方面来介绍 Django 在查询过程中的一些优化操作,有一些是介绍如何获取 Django 查询转化的 sql 语句,有一些是理解 QuerySet 是如何获取数据的. 以下是本篇 ...

  5. C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻

    前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往往要 ...

  6. IOS学习笔记(四)之UITextField和UITextView控件学习

    IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...

  7. MSSQL编程笔记四 解决count distinct多个字段的方法

    MSSQL编程笔记四 解决count distinct多个字段的方法 参考文章: (1)MSSQL编程笔记四 解决count distinct多个字段的方法 (2)https://www.cnblog ...

  8. RabbitMQ学习笔记四:RabbitMQ命令(附疑难问题解决)

    RabbitMQ学习笔记四:RabbitMQ命令(附疑难问题解决) 参考文章: (1)RabbitMQ学习笔记四:RabbitMQ命令(附疑难问题解决) (2)https://www.cnblogs. ...

  9. JSP学习笔记(四十九):抛弃POI,使用iText生成Word文档

    POI操作excel的确很优秀,操作word的功能却不敢令人恭维.我们可以利用iText生成rtf文档,扩展名使用doc即可. 使用iText生成rtf,除了iText的包外,还需要额外的一个支持rt ...

  10. Ethernet/IP 学习笔记四

    Ethernet/IP 学习笔记四 EtherNet/IP Quick Start for Vendors Handbook (PUB213R0): https://www.odva.org/Port ...

最新文章

  1. 有关GetPrivateProfileString的使用方法
  2. skill——iptables(五)
  3. 常用的排序算法的时间复杂度和空间复杂度 .
  4. 做一个.net 程序员要掌握的知识提纲
  5. Java异常处理教程
  6. 前端学习(1360) :学生档案信息管理2
  7. 国防科技大学计算机学院教员,我国最好的四所科技大学,第一名排名世界前列,还有一所是铁饭碗...
  8. 虚实结合:无需人工标注的可泛化行人再辨识
  9. 对Android蓝牙UUID的理解
  10. sql server 死锁排查
  11. 3811.排列-AcWing题库
  12. 读《大秦帝国》第二部
  13. android仿微信图片上传进度,Android开发之模仿微信打开网页的进度条效果(高仿)...
  14. Mysql主从复制和Redis主从复制
  15. Linux,grep命令,在大日志文件中搜索关键字 最后/最开始出现位置
  16. 方舟手游服务器gg修改,【修改贴】关于单机版gg修改器的应用。
  17. tcc activation offset 设置有误导致系统无法启动的解决办法
  18. 【Niagara 04】Tridium N4使用——生成报警信息
  19. html正则表达式验证字母,正则表达式校验字母和字符串组合
  20. Matlab 绘制多条曲线,方法!

热门文章

  1. 计算机蓝屏安全模式都启动不了,电脑一开机就蓝屏,安全模式也进不去怎么处理?...
  2. 3dsmax2013安装时提示visual2005c++库问题的解决方法
  3. selenium定位 百度搜索框输入关键字后,下拉框联想出来的怎么定位
  4. 史上最便捷搭建 ZooKeeper 服务器的方法(建议收藏)
  5. 【观察】新华三:融合技术优势和实践经验,推动智慧医疗驶入快车道
  6. 您应该知道的几个安卓照片恢复应用程序
  7. u盘启动linux3.0,5分钟打造U盘启动的Ubuntu (3篇)
  8. 网站优化:网站优化移动站SEO优化要点及注意事项
  9. maya具有多个材质的多边形批量传递材质的方法
  10. Go语言入门(一)之 结构体