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

相关推荐
好看资源平台11 分钟前
Spring 全家桶使用教程 —— 后端开发从入门到精通
java·数据库·spring
Y_3_732 分钟前
Redis 中 String 字符串类型详解
linux·数据库·redis·缓存·bootstrap
gorgor在码农1 小时前
Mysql 架构
数据库·mysql·架构
@月落1 小时前
获取douyin商品详情:API接口的力量
java·前端·数据库
program-learner1 小时前
日志系统扩展一:日志落地数据库:MySQL、SQLite3
数据库·mysql·sqlite·项目·日志系统
dbln2 小时前
MySQL之基本查询(一)(insert || select)
数据库·mysql
java—大象2 小时前
基于Java+Jsp+SpringMVC漫威手办商城系统设计和实现
java·数据库·spring boot·python·课程设计
程序猿进阶2 小时前
定时任务上云改造方案
java·服务器·网络·数据库·性能优化·定时任务·上云
路人与大师3 小时前
一步一步优化一套生成式语言模型系统
数据库·语言模型·oracle
小扳3 小时前
Redis 篇-深入了解 Redis 五种数据类型和底层数据结构(SDS、Intset、Dict、ZipList、SkipList、QuickList)
java·数据结构·数据库·redis·分布式·缓存