1.先来看一个简单的模型,了解下基本模型得组成
from django.db import models
class Person(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
说明:
我们可以看到我们定义了一个Person类,继承models.Model类,这个类对应一个表,表名默认为appname_person 也就是app的名称加上下划线在加上类名的小写。当然表名也可以自定义,后面说到。
两个属性,代表两个字段。两个字段类型为CharField也就是字符串类型。且有些字段选项来描述字段。比如这里的max_length指明字段的大小。每个类默认还会自动创建一个id的字段,这个字段不为空,且是主键。当然自己也可以自定义主键,只要字段选项primary_key=True即可。
2.常用字段
- CharField()
字符字段
选项:
(1)max_length = number or None 定义字符长度 (必填选项)
(2)unique = True 默认False 定义字段唯一性
(3)choice = xxx_CHOICES(一个元祖) 选项 是一个选择框而不是标准文本字段
2.TextFiled()
文本字段
选项:max_length = number or None (必填选项)
如不是必填项,可设置blank = True和default = ‘’
3.DateField() and DateTimeField()
日期与时间字段
4.EmailField()
邮件字段
5.IntegerField()
整数字段
6.FileField()
文件字段
选项:
upload_to :上传路径
7.ImageField
图片字段
8.ForeignKey(to, on_delete, **options) - 单对多关系
to必需指向其他模型,比如 Book or ‘self’ .
必需指定on_delete options(删除选项): i.e, “on_delete = models.CASCADE” or “on_delete = models.SET_NULL” .
可以设置"default = xxx" or “null = True” .
如果有必要,可以设置 "limit_choices_to = ",如下面例子。
staff_member = models.ForeignKey( User, on_delete=models.CASCADE, limit_choices_to={‘is_staff’: True}, )
可以设置 “related_name = xxx” 便于反向查询
9.ManyToManyField(to, **options) - 多对多关系
to 必需指向其他模型,比如 User or ‘self’ .
设置 "symmetrical = False " if 多对多关系不是对称的
设置 "through = ‘intermediary model’ " 如果需要建立中间模型来搜集更多信息
可以设置 “related_name = xxx” 便于反向查询。
3.meta选项
模型元数据是“任何不是字段的东西”,例如排序选项(ordering),数据库表名(db_table)或人类可读的单数和复数名称(verbose_name和 verbose_name_plural)。不需要,添加到模型是完全可选的。class Meta
可参考:https://docs.djangoproject.com/zh-hans/2.0/ref/models/options/
更多模型知识可可参考官方文档:https://docs.djangoproject.com/zh-hans/2.0/topics/db/queries/