Django model 参考(一)
django 中model 作为数据资源指定了字段以及一些处理该相应的功能。通常情况下,每个model对应数据库中的一张表
- 每个model都是从django.core.meta.Model中派生出来的
- model中每个属性(class attribute)对应着数据库表中的一个字段
- 非字段信息(Model metadata)在类中被称作META
Field Objects
每个class attributes对应着数据库中的一个字段,其应该是由meta.Filed的派生的。
from django.core import meta
class Person(meta.Model):
first_name = meta.CharField(maxlength=30)
last_name = meta.CharFiled("lastname",maxlength=30)
除了 ForeignKey, ManytoManyFiled OneToOneField 使用verbose_name关键字以外,第一个可选参数是用来为字段命名的,如果不设置,系统会自动为起起名。
sites = meta.ManyToManyField(site,verbose_name="list of sites")
Field 选项
null
null 缺省设置为false.通常不将其用于字符型字段上,比如CharField,TextField上.字符型字段如果没有值会返回空字符串。
blank
该字段是否可以为空。如果为假,则必须有值
choices
一个用来选择值的2维元组。第一个值是实际存储的值,第二个用来方便进行选择。
SEX_CHOICES= (('F','Female'),('M','Male'),)
core
db_column
db_index
如果为真将为此字段创建索引
default
缺省值
editable
如果为假,admin模式下将不能改写。缺省为真
help_text
admin模式下帮助文档
primary_key
设置主键。如果没有设置django创建表时会自动加上
id = meta.AutoField('ID', primary_key=True)
primary_key=True implies
blank=False,
null=False and unique=True. Only one primary key is allowed on an object.
radio_admin
用于admin模式下将select转换为radio显示。只用于ForeignKey或者设置了choices
unique
数据唯一
unique_for_date
title = meta.CharField(maxlength=30,unique_for_date='pub_date')
系统将不允许title和pub_date两个都相同的数据重复出现
unique_for_month / unique_for_year
validator_list
有效性检查。非有效产生 django.core.validators.ValidationError 错误
Field Types
AutoField
自动增长的整型字段。通常无需自己添加
BooleanField
CharField
对于大量文字应该使用TextField。参数: maxlength
DateField
参数: auto_now 自动设置为对象保存时刻的时间。对于类似最后改动之类的应用很有效
auto_now_add 从最初保存对象至今的增量时间
DateTimeField 同上
EmailField
检查是否为email的CharField字段
FileField
保存文件的相对路径名称
绝对路径需要在setting中设置 MEDIA_ROOT。对于ImageField设置 MEDIA_URL。
参数upload_to.相对于MEDIA_ROOT目录的子目录
通过get_<fieldname>_url获取绝对路径
FilePathField
通过给定参数获取文件列表(个人感觉)
path 必须要有。 文件系统的绝对路径
match 可选。一个正则表达式。用来做文件筛选过滤
recursive 可选。True 包含子目录查找
FilePathField(path="/home/images", match="foo.*" , recursive=True)
FloatField
浮点数字段。两个必须选项
max_digits 数字最多位数
decimal_places 小数点位置
meta.FloatField(...,max_digits=5,decimal_places=2) /////100.00
ImageField
基本上同FileField.会进行文件格式检查。两个额外选项
height_field, width_field 如果设置这两项,会自动对图片进行缩放后再保存
需要 python Imaging library
IntegerField
IPAddressField
"10.1.1.3"
NullBooleanField
比BooleanField多了一个NULL状态
PhoneNumberField
美国格式电话号码 xxx-xxx-xxxx. CharField
PositiveIntegerField
正整数
PositiveSmallIntegerField
一个小的正整数。根据数据库的设置
SlugField
小片断。什么都可以。通常用来存url
SlugField 被暗指 maxlength=50 db_index=True
选项: prepopulate_from 一个用来自动生成slug的字段列表
SmallIntegerField
TextField
TimeField
选项: auto-population(可能不对) from DateField and DateTimeField
URLField
选项: verify_exists 如果为True ,系统自动检查该url是否存在不为404
USStateField
两字符美国州简写
XMLField
保存xml数据。
选项:schema_path .指定relaxNG格式schema用来检验xml合法性
分享到:
相关推荐
第19周-第16章节-Python3.5-Django字段类型介绍.avi
另一种可轻松编辑新Django字段JSONField(PostgreSQL特定模型字段)的小部件 快速开始 安装django-json-widget: pip install django-json-widget 将其添加到您的INSTALLED_APPS: INSTALLED_APPS = ( ... ' ...
Django的PostgreSQL LTreeField PostgreSQL ltree类型的极简Django字段。 django-ltree-field尝试对用例做出很少的假设。 对于基于django-ltree-field的更高级别的API,请考虑使用django-ltree-utils中的预构建模型...
Django 3.1中跨数据库模型和表单字段的。 from django . db import models from django_jsonfield_backport . models import JSONField class ContactInfo ( models . Model ): data = JSONField () ContactInfo...
1.django自定义字段类型,实现非主键字段的自增 # -*- encoding: utf-8 -*- from django.db.models.fields import Field, IntegerField from django.core import checks, exceptions from django.utils.translation ...
python库。 资源全名:django-bitfield-1.6.0.tar.gz
姜戈厚皮动物 一组用于 PostgreSQL 特殊数据类型的 Django 字段。JSON 直接处理dict对象。 不要手动序列化为字符串: from pachyderm.fields import JSONField class MyModel(models.Model): data = JSONField() >>>...
Django模型字段加密/解密您的数据,并加密保存至数据库中
资源来自pypi官网。 资源全名:django-json-field-0.4.1.tar.gz
django-ratings, 在 Django 中,可以插入的分级字段 ratings这个项目的不再维持一般分级 MODULE 字段本身在模型上附加两个附加字段,以优化原因。 它添加了 <field>_score 和 <field>_votes 字段,它们都是整型字段...
django的model field需要动态设置默认值,具体案例如下: 原始代码如下,model是Application,其中字段ignore_fort的默认值设置为False class Application(TimestampedModel): name = models.CharField(max_length...
Django的Field类中方法有: to_python() # 把数据库数据转成python数据 from_db_value() # 把数据库数据转成python数据 get_pre_value() # 把python数据压缩准备存入数据库 get_db_pre_value() # 把压缩好的数据转成...
复制代码 代码如下:from django import formsfrom django.db import modelsfrom django.utils.text import capfirstfrom django.core import exceptions class MultiSelectFormField(forms.MultipleChoiceField): ...
python库。 资源全名:vlk-django-jsonfield-1.2.1.tar.gz
django-bitfield 为您的Django模型提供类似BitField的类(使用BigIntegerField)。 (如果您要从1.2之前的版本升级,则API发生了很大变化,并且向后不兼容!) 要求 的Django> = 1.10.8 PostgreSQL(请参阅注释)...
django-classfield执照版权所有 2014 迈克·哈里斯在许可下获得。
HashField类在Django中实现了一个自定义字段,每次保存模型时,该字段都会自动存储原始字段(例如url字段)的哈希值。例子使用HashField,您可以按以下方式在Django中存储唯一URL的列表: class VisitedSite(models...
django-enumfield 提供带有可重用枚举和过渡验证的枚举Django模型字段(使用IntegerField )。安装当前,Django 1.11-3.1版和Python 2.7、3.4-3.8版。 在您的Python环境中安装django-enumfield : $ pip install ...