配置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
逆向从数据库表生成模型类
-
在对一个数据库中建立好表、约束和表关系等
-
在根目录的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:详细字段名,不指定则是属性名的小写,并且用 空格 替换 '_'