2019年7月9日
Jerry
5037
2019年7月9日
django 常用内置字段用法详解,备忘一下,需要的时候直接拿来用。
直接上代码:
# 测试 Model字段
class TestModel(models.Model):
test2 = models.DateField(verbose_name='日期')
test3 = models.DateTimeField(verbose_name='时间日期')
# decimal_places 小数点位数 精度 max_digits 最大位数
test4 = models.DecimalField(verbose_name='十进制小数', max_digits=10, decimal_places=5)
test5 = models.FloatField(verbose_name='浮点数')
test6 = models.IntegerField(verbose_name='整形')
test7 = models.BigIntegerField(verbose_name='长整形')
test8 = models.SmallIntegerField(verbose_name='Small INT')
test9 = models.PositiveIntegerField(verbose_name='正数INT')
test10 = models.PositiveSmallIntegerField(verbose_name='正数Small INT')
'''
范围取值:
'SmallIntegerField': (-32768, 32767),
'IntegerField': (-2147483648, 2147483647),
'BigIntegerField': (-9223372036854775808, 9223372036854775807),
'PositiveSmallIntegerField': (0, 32767),
'PositiveIntegerField': (0, 2147483647),
'''
test12 = models.GenericIPAddressField(verbose_name='IP地址')
test13 = models.SlugField(verbose_name='Slug')
test14 = models.TextField(verbose_name='文本框')
test15 = models.TimeField(verbose_name='时间')
test16 = models.URLField(verbose_name='URL地址')
test17 = models.BinaryField(verbose_name='二进制')
test18 = models.ImageField(verbose_name='图片')
test19 = models.FileField(verbose_name='文件')
class Meta:
verbose_name = '测试Model'
verbose_name_plural = verbose_name
def __str__(self):
return "测试Model"
效果:
1、null=True
数据库中字段是否可以为空
2、blank=True
django的 Admin 中添加数据时是否可允许空值
3、primary_key = False
主键,对AutoField设置主键后,就会代替原来的自增 id 列
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 不允许重复
11、db_index = True 数据库索引
12、editable=True 在Admin里是否可编辑
13、error_messages=None 错误提示
14、auto_created=False 自动创建
15、help_text 在Admin中提示帮助信息
16、upload-to 上传路径
17、validators=[] 可自定义数据特性
例如指定输入数据必须是偶数,可以做以下设置:
from django.core.exceptions import ValidationError
from django.utils.translation import gettext_lazy as _
def validate_even(value):
if value % 2 != 0:
raise ValidationError(
_('%(value)s is not an even number'),
params={'value': value},
)
from django.db import models
class MyModel(models.Model):
even_field = models.IntegerField(validators=[validate_even])
好记性不如烂笔头啊!脑子是一天不如一天。。
原创文章,转载请注明出处:
https://jerrycoding.com/article/django-model
《备忘录》
2
微信
支付宝