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

配置PostGre

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

1. 配置 PostgreSQL 数据库连接

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

修改 settings.py 文件:
复制代码
# settings.py

DATABASES = {
    '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 models

class 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 models

class 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:详细字段名,不指定则是属性名的小写,并且用 空格 替换 '_'

相关推荐
这个DBA有点耶3 天前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
DBA_G3 天前
从地面到云霄:GBase数据库在民航三大场景的落地实践
数据库
自由能燃气设备3 天前
商用全预混低氮冷凝锅炉免费方案vs付费方案对比+选型避坑指南
大数据·数据库·人工智能
科创致远3 天前
科创致远 ESOP 系统核心效能与实战价值展示
大数据·数据库·人工智能·精益工程
2601_962218613 天前
万象生鲜系统称重自动多退少补算法解决生鲜非标品痛点
大数据·数据库·人工智能·python·算法
张洛闻Eren3 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
于平安3 天前
MySQL-触发器
数据库·mysql
白远山3 天前
上海24小时自助健身房解决方案实战指南与经验分享
java·数据库·架构·需求分析
Omics Pro3 天前
斯坦福Nature+Science|广义虚拟细胞基础大模型
数据库·人工智能·算法·机器学习·自然语言处理
2603_965148113 天前
AI+API选品:下一代智能商务助手雏形已现
java·大数据·数据库·人工智能·数据挖掘