当前位置: 首页 > news >正文

Django 数据库配置以及字段设置详解

配置PostGre 

要在 Django 中配置连接 PostgreSQL 数据库,并创建一个包含“使用人”和“车牌号”等字段的 Car

1. 配置 PostgreSQL 数据库连接

首先,在 Django 项目的 settings.py 中配置 PostgreSQL 连接。

修改 settings.py 文件:
# settings.pyDATABASES = {'default': {'ENGINE': 'django.db.backends.postgresql',  # 使用 PostgreSQL'NAME': 'your_db_name',                    # 数据库名称'USER': 'your_db_user',                    # 数据库用户名'PASSWORD': 'your_db_password',            # 数据库密码'HOST': 'localhost',                       # 数据库主机,通常是localhost'PORT': '5432',                            # 数据库端口,通常是5432}
}

确保已经在 PostgreSQL 中创建了数据库,假设数据库名为 your_db_name,并设置了相应的用户名和密码。

 2. 下载依赖库

pip install psycopg2

模型生成数据库表

1. 创建 Car 模型

接下来,创建一个 Car 模型,该模型会映射为数据库中的 car 表。

创建 models.py 文件:
# 在应用的 models.py 文件中定义模型
from django.db import modelsclass Car(models.Model):user = models.CharField(max_length=100)  # 使用人字段plate_number = models.CharField(max_length=20)  # 车牌号字段def __str__(self):return f"{self.plate_number} - {self.user}"

2.模型生成具体库

预备迁移文件生成

python manage.py makemigrations 模型所在包名

正式迁移把预备文件进行执行

python manage.py migrate

逆向从数据库表生成模型类

  1. 在对一个数据库中建立好表、约束和表关系等

  2. 在根目录的cmd中运行:

python manage.py inspectdb > first_app/models.py

第2步执行后会在models中生成对应的模型类

譬如:

class DjangoSession(models.Model):session_key = models.CharField(primary_key=True, max_length=40)session_data = models.TextField()expire_date = models.DateTimeField()class Meta:managed = False   # 这个属性是通知django,不需要进行从模型到数据库的迁移管理db_table = 'django_session'  # 对应的数据库中的表名

Field(模型字段)

Field类型

所有的Field类型,见 Model field reference | Django documentation | Django

AutoField         自增id常用

BooleanField      布尔值

CharField             短文本

DateField             日期格式

DateTimeField       日期带时间的给是

FloatField           小数

SmallIntegerField      小整数

IntegerField            大整数

TextField          文本

UUIDField 这样使用:

import uuid
from django.db import modelsclass MyUUIDModel(models.Model):# uuid.uuid4 千万别写成 uuid.uuid4() ,不要写 ()id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)

Field参数

  • max_length:字段最大长度,用于字符串等,字符串类型CharField必须设置该值

  • null:如果True,Django将在数据库中存储NULL空值。默认是False

  • blank:如果True,该字段被允许为空白("")。默认是False。请注意,这不同于null。null纯粹是与数据库相关的,而blank与验证相关。如果一个字段有blank=True,表单验证将允许输入一个空值。如果一个字段有blank=False,该字段将是必需的。

  • choices:示例:YEAR_IN_SCHOOL_CHOICES = (('FR', 'Freshman'),('SO', 'Sophomore'),('JR', 'Junior'),('SR', 'Senior'),('GR', 'Graduate')) ,中文示例:SEX_CHOICES=((1, '男'),(2, '女')),元组中的第一个元素是将存储在数据库中的值,第二个元素是将在页面中显示的值,最常见用于下拉选择框select

  • default:字段的默认值

  • help_text:用于显示额外的“帮助”文本

  • primary_key:如果True,这个字段是模型的主键,默认是False

  • unique:如果True,该字段在整个表格中必须是唯一的

  • verbose_name:详细字段名,不指定则是属性名的小写,并且用 空格 替换 '_'

相关文章:

  • 深入理解 Nuxt.js 中的 app:created 钩子
  • 打造备份一体机,群晖科技平台化战略再进阶
  • 网络安全科普之网络钓鱼,零基础入门到精通,收藏这一篇就够了
  • 栅极控制技术是什么?(MOSFET、IGBT)
  • 如何使用Kimi编写商品管理设计文档:包含流程图和用例图
  • OIDC6-OIDC 授权流程类型
  • Paddlets时间序列集成模型回测实战:MLPRegressor、NHiTSModel与RNNBlockRegressor
  • 15 Midjourney从零到商用·实战篇:建筑设计与室内设计
  • 8.使用 VSCode 过程中的英语积累 - Help 菜单(每一次重点积累 5 个单词)
  • (28)oracle数据迁移(容器)-部署包资源
  • OpenCV视频I/O(7)视频采集类VideoCapture之初始化视频捕获设备或打开一个视频文件函数open()的使用
  • 【HTML|第1期】HTML5视频(Video)元素详解:从起源到应用
  • 智影S100户外直接采集输出的是绝对坐标吗?内业是否需要控制点进行配准?
  • access mysql
  • 星辰计划04-深入理解kafka的消息存储和索引设计
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • co模块的前端实现
  • docker-consul
  • es的写入过程
  • GitUp, 你不可错过的秀外慧中的git工具
  • java多线程
  • Java应用性能调优
  • Laravel 实践之路: 数据库迁移与数据填充
  • Python学习之路13-记分
  • SpringCloud集成分布式事务LCN (一)
  • Vue--数据传输
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 反思总结然后整装待发
  • 复杂数据处理
  • 爬虫模拟登陆 SegmentFault
  • 配置 PM2 实现代码自动发布
  • 悄悄地说一个bug
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 手写一个CommonJS打包工具(一)
  • UI设计初学者应该如何入门?
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ​必胜客礼品卡回收多少钱,回收平台哪家好
  • ​虚拟化系列介绍(十)
  • #pragma multi_compile #pragma shader_feature
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • ${factoryList }后面有空格不影响
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (42)STM32——LCD显示屏实验笔记
  • (52)只出现一次的数字III
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (php伪随机数生成)[GWCTF 2019]枯燥的抽奖
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (一)SpringBoot3---尚硅谷总结
  • (转)ObjectiveC 深浅拷贝学习
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • *算法训练(leetcode)第四十天 | 647. 回文子串、516. 最长回文子序列
  • .NET C# 使用 iText 生成PDF
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端