Django 模型(Model)字段类型级参数详解
序号 | 字段类型(Filed Types) | 描述 | |
1 | AutoField | 根据可用id自动递增的整数字段。通常不需要直接使用它;如果不指定主键字段,则会自动将主键字段添加到模型中。 | |
2 | CharField | 用来存储字符串,必须制定范围,如果存储大文本字符串,应当用TextField. | |
3 | DateField | 使用Python的datetime.date实例保存的日期。auto_now = True:每次保存对象时,自动设置该字段为当前时间;auto_now_add=True:对象第一次被创建时自动设置当前时间。需要注意的是,自动保存的时间的时区使用的是默认时区。 | |
4 | DateTimeField |
| |
5 | TextField | 存储大字符串 | |
6 | BigIntegerField | 64位的整型数值,从 -2^63 (-9223372036854775808) 到 2^63-1(9223372036854775807) | |
7 | BinaryField | 存储二进制码的Field. 只支持bytes 赋值。 | |
8 | BooleanField | 该字段的默认表单控件是CheckboxInput,如果你需要设置null 值,则使用NullBooleanField 来代替BooleanField。 | |
9 | FloatField | 用Python的一个float 实例来表示一个浮点数。 | |
10 | UUIDField | 一个用来存储UUID的字段。使用Python的UUID类。 | |
11 | ForeignKey | 多对一关系 | |
12 | ManyToManyField | 多对多关联 | |
13 | OneToOneField | 一对一关联关系 |
1、null=True 数据库中字段是否可以为空
2、blank=True django的 Admin 中添加数据时是否可允许空值
3、primary_key = False
主键,对AutoField设置主键后,就会代替原来的自增 id 列
如果您没有为模型中的任何字段指定primary_key=True, Django将自动添加一个IntegerField来保存主键,所以您不需要在任何字段上设置primary_key=True,除非您想要覆盖默认的主键行为。有关更多信息,请参见自动主键字段。
主键字段是只读的。如果您更改现有对象上的主键值,然后保存它,就会在旧对象旁边创建一个新对象。例如:
from django.db import models
class Fruit(models.Model):
name = models.CharField(max_length=100, primary_key=True)
fruit = Fruit.objects.create(name='Apple')
>>> fruit.name = 'Pear'
>>> fruit.save()
>>> Fruit.objects.values_list('name', flat=True)
<QuerySet ['Apple', 'Pear']>
4、auto_now 和 auto_now_add
auto_now 自动创建---无论添加或修改,都是当前操作的时间
auto_now_add 自动创建---永远是创建时的时间
5、choices
GENDER_CHOICE = (
(u'M', u'Male'),
(u'F', u'Female'),
)
gender = models.CharField(max_length=2,choices = GENDER_CHOICE)
6、max_length 字符串最大长度
7、default 默认值
8、verbose_name Admin 中字段的显示名称
9、name|db_column 数据库中的字段名称
10、unique=True
不允许重复,例如用户名注册时候是不允许重复的,在username字段里设置,不让重复
11、db_index = True 数据库索引
12、editable=True 在Admin里是否可编辑
13、error_messages=None
错误提示
把错误提示修改成你想要的报错,这里加个字典来完成 gender = models.CharField(max_length=2,choices = GENDER_CHOICE,error_messages={"错误类型":"错误原因"})
14、auto_created=False 自动创建
15、help_text 在Admin中提示帮助信息
16、validators=[] 提示区间,例如电话号码范围
17、upload-to 文件上传功能 在 FileField 里加入 例如: file = modles.FileField(upload-to = "./upload/" 指明上传的文件防止根目录下的/upload/文件夹下