定义model的方式
# models.py
from django.db import models
class Person(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
告诉django使用这些模型
首先修改settings.py文件,把model所在的app添加到 INSTALLED_APPS这个列表变量中。
# settings.py中
INSTALLED_APPS = [
#...
'myapp',
#...
]
执行如下命令
python manage.py makemigrations #可选步骤
python manage.py migrate
字段
模型中的每个字段对应一个数据库表字段。
django从模型字段的类型可以得知如下内容:
- 对应的数据库字段的类型
- 默认的该字段在页面上渲染时所用的HTML小部件类型
- 实现基础的字段值合法性校验
字段选项
null
是否把空值存储为NULL。默认为FALSE。
blank
字段是否允许为空。默认为FALSE。
与null不同:blank是校验层面的空值空值,null是数据库层面的空值空值。blank=true,则输入表单字段允许不输入;blank=false,则输入表单字段必填。
choices
枚举值字段。定义格式:
from django.db import models
class Person(models.Model):
SHIRT_SIZES = (
('S', 'Small'),
('M', 'Medium'),
('L', 'Large'),
)
name = models.CharField(max_length=60)
shirt_size = models.CharField(max_length=1, choices=SHIRT_SIZES)
python控制台输入:
p = Person(name="Fred Flintstone", shirt_size="L")
p.save()
p.shirt_size
'L'
p.get_shirt_size_display()
'Large'
default
默认值。可以是一个值,也可以是一个callable。callable在每次创建新对象的时候调用。
help_text
显示在表单上的帮助。对于不显示在表单上的字段,这个可以起到备注作用。
primary_key
表示这个字段用作主键。如果没有一个字段被指定为primary_key,django会自动生成一个自增字段作为主键。django生成的字段是的业务逻辑和主键得以分开,是推荐的主键方式。
unique
表示这个字段是唯一字段
可视字段名称
一般字段定义的时候,可以用第一个位置参数指定一个可视字段名称。如果不指定,会自动使用定义时候的变量名,把下划线替换为空格。
下面三个字段的第一个位置参数是model对象,因此可视字段名称的指定方式有所不同(通过verbose_name关键字字段):
关系
一对一
一对多