官方文档
https://docs.djangoproject.com/zh-hans/4.1/intro/tutorial02/

模型设计哲学

一个模型就是单个定义你的数据的信息源。模型中包含了不可缺少的数据区域和你存储数据的行为。Django 遵循 DRY 原则。目的就是定义你的数据模型要在一位置上,而且自动从该位置推导一些事情。

案例中的模型

在这个投票应用中,需要创建两个模型:问题 Question 和选项 Choice。Question 模型包括问题描述和发布时间。Choice 模型有两个字段,选项描述和当前得票数。每个选项属于一个问题。

这些概念可以通过一个 Python 类来描述。按照下面的例子来编辑 polls/models.py 文件:

from django.db import models# Create your models here.class Question(models.Model):question_text = models.CharField(max_length=200)pub_date = models.DateTimeField('发布时间')class Choice(models.Model):question = models.ForeignKey(Question,on_delete=models.CASCADE)choice_text = models.CharField(max_length=200)votes = models.IntegerField(default=0)

迁移到数据库(manage.py makemigrations 、migrate)

这个涉及的原理很多,作为食用主义者,记住这三步操作就可以了:

1、编辑 models.py 文件,改变模型。(检查 python manage.py check 检查项目中的问题)
2、运行 python manage.py makemigrations 为模型的改变生成迁移文件。
3、运行 python manage.py migrate 来应用数据库迁移。

为方便运行这些命令而不至反复复制绝对路径,最终我妥协了,还是污染一下我的操作系统环境:

这样就可以愉快使用相对路径来执行命令了:

代码添加数据到数据库中

下面照着官方的例子熟悉一下Django操作数据库和类的方法:

python manage.py shell
>>> from polls.models import Choice, Question  # Import the model classes we just wrote.# No questions are in the system yet.
>>> Question.objects.all()
<QuerySet []># Create a new Question.
# Support for time zones is enabled in the default settings file, so
# Django expects a datetime with tzinfo for pub_date. Use timezone.now()
# instead of datetime.datetime.now() and it will do the right thing.
>>> from django.utils import timezone
>>> q = Question(question_text="What's new?", pub_date=timezone.now())# Save the object into the database. You have to call save() explicitly.
>>> q.save()# Now it has an ID.
>>> q.id
1# Access model field values via Python attributes.
>>> q.question_text
"What's new?"
>>> q.pub_date
datetime.datetime(2012, 2, 26, 13, 0, 0, 775217, tzinfo=<UTC>)# Change values by changing the attributes, then calling save().
>>> q.question_text = "What's up?"
>>> q.save()# objects.all() displays all the questions in the database.>>> Question.objects.all()
<QuerySet [<Question: Question object (1)>]>

更多关于数据库和模型的操作可以看一下两个文档

https://docs.djangoproject.com/zh-hans/4.1/topics/db/queries/
https://docs.djangoproject.com/zh-hans/4.1/ref/models/relations/

这样,我们就完成了模型和数据库的创建

Django4.1从入门到精通——模型的创建相关推荐

  1. PyTorch系列入门到精通——模型创建与nn.Module

    PyTorch系列入门到精通--模型创建与nn.Module  

  2. PyTorch系列入门到精通——模型保存与加载

    PyTorch系列入门到精通--模型保存与加载

  3. qt 创建文件_xmake从入门到精通2:创建和编译工程

    xmake是一个基于Lua的轻量级现代化c/c++的项目构建工具,主要特点是:语法简单易上手,提供更加可读的项目维护,实现跨平台行为一致的构建体验. 本文主要详细讲解如何创建一个基于xmake的工程以 ...

  4. CANoe 从入门到精通

    目录 前言 初级篇 实践篇 前言 本专栏主要分为二个部分: 第一部分是初级篇,主要介绍CANoe中常用的模块: 第二部分是实践篇,主要是带领大家一起做一个项目,此项目是BootLoader刷写的上位机 ...

  5. tensorflow从入门到精通100讲(七)-TensorFlow房价预估使用Keras快速构建模型

    前言 这篇文章承接上一篇tensorflow从入门到精通100讲(二)-IRIS数据集应用实战 https://wenyusuran.blog.csdn.net/article/details/107 ...

  6. Simulink仿真入门到精通(五) Simulink模型的仿真

    本系列教程是根据孙忠潇编著的<<Simulink仿真及代码生成技术入门到精通>>学习笔记. 目录 Simulink仿真入门到精通(一) Simulink界面介绍 Simulin ...

  7. 渲染引擎入门到精通一_导入模型的实现和解决fbxsdk的使用坑

    前置条件, 学习这个文章前,需完全跑通项目 ​​​​​​​渲染引擎入门到精通-前篇零-HLSL编译的方法研究_avi9111的博客-CSDN博客 ​​​​​​​ 导入模型 因为渲染需要用到法线,切线, ...

  8. 火云开发课堂 - 《Shader从入门到精通》系列 第十六节:在Shader中对3D模型使用纹理

    <Shader从入门到精通>系列在线课程 优惠链接:http://edu.csdn.net/combo/detail/90 第十一节:在Shader中对3D模型使用纹理 视频地址: htt ...

  9. 火云开发课堂 - 《Shader从入门到精通》系列 第二十节:在Shader中对3D模型进行多纹理混合

    <Shader从入门到精通>系列在线课程 优惠链接:http://edu.csdn.net/combo/detail/90 第二十节:在Shader中对3D模型进行多纹理混合 视频地址:  ...

最新文章

  1. 基于Pygame写的翻译方法
  2. 用c语言运行程序的优点,C语言学习与总结---第一章:C语言概述
  3. VMware下Ubuntu联网操作
  4. JS日期加减,日期运算
  5. 远程命令执行与代码执行(remote command/code execute)漏洞总结
  6. 刘子佼 mysql 下载_MySQL数据管理之备份恢复案例解析 23讲 Mysql备份恢复实战 视频教程...
  7. 前端JavaScript规范
  8. 上证指数30年k线图_技术预判2020:上证指数要突破3500点才会“井喷”
  9. 浏览器中跨域创建cookie的问题
  10. 金蝶kiss对计算机软件的要求,金蝶软件的产品适用范围分析
  11. 作业要求 20180925-1 每周例行报告
  12. centos下安装和卸载jdk
  13. matplotlib绘制树形图之基本配置——万能模板案例
  14. 有50 家人家,每家一条狗。有一天警察通知
  15. Transact-SQL语言基础语句
  16. 在公众号发文是怎么赚钱的
  17. nodejs mysql更新redis_node中的redis使用--ioredis
  18. VMware -- 克隆虚拟机
  19. CCNA实验二十四 路由更新的安全
  20. IntelliJ IDEA 目录

热门文章

  1. 大专毕业的我,用了6年拿到年薪50W
  2. python求峰面积_大学慕课2020年用Python玩转数据答案大全
  3. 为什么黑客从不用鼠标,一直在敲键盘?看完长见识了
  4. ettercap进行简单的arp欺骗和中间人攻击
  5. 千锋--企业新闻发布管理项目笔记---上
  6. wps中ctrl+v粘贴快捷键失灵
  7. 【Matlab】如何绘制errorbar误差棒
  8. 阿里如何实现高性能分布式强一致的独立 Paxos 基础库?
  9. 计算机底层知识——二进制之间的加减乘除运算
  10. Python 常用函数(自用)