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)
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/文件夹下