博客动态
Hi!欢迎来到Jerry Coding!喜欢请关注!谢谢!有问题可以留言或者点击下面的QQ交流哦!(最近博主划水中。。更新较慢。。。)
微信扫码

扫一扫关注我

More
关于
New
RSS

django model字段详解

Jerry 2019年7月9日 460  

      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

微信
支付宝

您尚未登录,暂时无法评论。请先 登录 或者 注册

0 人参与 | 0 条评论