django model blank数据模型中 null=True 和 blank=True 有什么区别

django 数据模型中 null=True 和 blank=True 有什么区别_百度知道
django 数据模型中 null=True 和 blank=True 有什么区别
blank是对用户输入的限制,null是对程序&#47,是否可以为空null=True另一方面决定程序如何操作数据库的数据URL类型,每一个字段是什么数据类型模型有两个方面的作用一方面决定所创建*数据库*的结构有哪些字段,在*网页输入*时需要检查是否满足超链接的条件blank=True决定在网页输入数据时是否可以为空而在程序中写入数据时则不检查并非约束数据的结构一句话来说
知道智能回答机器人
我是知道站内的人工智能,可高效智能地为您解答问题。很高兴为您服务。
为您推荐:
django的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁Django模型修改及数据迁移 - 推酷
Django模型修改及数据迁移
Migrations
Django中对Model进行修改是件麻烦的事情,syncdb命令仅仅创建数据库里还没有的表,它并不对已存在的数据表进行同步修改,也不处理数据模型的删除。 如果你新增或修改数据模型里的字段,或是删除了一个数据模型,你需要手动在数据库里进行相应的修改或者使用South。Django 1.7中已经集成了South的代码,提供了3个新命令:
migrate: 用于执行迁移动作,具有syncdb的功能
makemigrations: 基于当前的model创建新的迁移策略文件
sqlmigrate: 显示迁移的SQL语句,具有sqlall的功能
使用起来很简单,对Model做了修改后,使用makemigrations记录修改:
$ python manage.py makemigrations
Migrations for 'books':
0003_auto.py:
- Alter field author on book
你的Model会被扫描, 然后与migrations文件夹中以前的版本作比较, 然后生成本次迁移文件。
有了新的migration文件,就可以使用migrate修改数据库模式:
$ python manage.py migrate
Operations to perform:
Synchronize unmigrated apps: sessions, admin, messages, auth, staticfiles, contenttypes
Apply all migrations: books
Synchronizing apps without migrations:
Creating tables...
Installing custom SQL...
Installing indexes...
Installed 0 object(s) from 0 fixture(s)
Running migrations:
Applying books.0003_auto... OK
也可以针对单独的app生成migration:
$ python manage.py makemigrations your_app_label
也可以对数据库中的数据进行修改,首先建立一个空的migration文件:
python manage.py makemigrations --empty yourappname
文件的内容如下:
# -*- coding: utf-8 -*-
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('yourappname', '0001_initial'),
operations = [
如果想修改某个Model例如Person的数据,设置其name字段:
# -*- coding: utf-8 -*-
from django.db import models, migrations
def combine_names(apps, schema_editor):
# We can't import the Person model directly as it may be a newer
# version than this migration expects. We use the historical version.
Person = apps.get_model(&yourappname&, &Person&)
for person in Person.objects.all():
person.name = &%s %s& % (person.first_name, person.last_name)
person.save()
class Migration(migrations.Migration):
dependencies = [
('yourappname', '0001_initial'),
operations = [
migrations.RunPython(combine_names),
最后运行&python manage.py migrate
即可。这样Person中的所有对象的name字段都设置好了。
依据Model修改关系数据库是开发中的一个重要的问题,解决这个问题可以提升开发速度,不过要在生产环境中随便使用migrate操作数据库还是很危险的,有时候需要手动修改数据库。
手动修改数据库
当处理模型修改的时候:
如果模型包含一个未曾在数据库里建立的字段,Django会报出错信息。 当你第一次用Django的数据库API请求表中不存在的字段时会导致错误。
Django不关心数据库表中是否存在未在模型中定义的列。
Django不关心数据库中是否存在未被模型表示的table。
在你的模型里添加字段。下例向Book模型添加num_pages字段:
class Book(models.Model):
title = models.CharField(max_length=100)
authors = models.ManyToManyField(Author)
publisher = models.ForeignKey(Publisher)
publication_date = models.DateField()
**num_pages = models.IntegerField(blank=True, null=True)**
def __unicode__(self):
return self.title 
运行manage.py sqlall yourappname来测试模型新的CREATE TABLE语句。
CREATE TABLE &books_book& (
&id& serial NOT NULL PRIMARY KEY,
&title& varchar(100) NOT NULL,
&publisher_id& integer NOT NULL REFERENCES &books_publisher& (&id&),
&publication_date& date NOT NULL,
&num_pages& integer NULL
开启你的数据库的交互命令界面(比如,psql或者mysql,或者可以使用manage.py dbshell。 执行ALTER TABLE语句来添加新列。
ALTER TABLE books_book ADD COLUMN num_  
添加 非NULL 字段
先创建 NULL 型的字段,然后将该字段的值填充为某个默认值,然后再将该字段改为 NOT NULL 型
ALTER TABLE books_book ADD COLUMN num_
UPDATE books_book SET num_pages=0;
ALTER TABLE books_book ALTER COLUMN num_pages SET NOT NULL;
添加ForeignKey或ManyToManyField
添加外键即是添加key_id的integer字段,添加多对多字段是创建一个新的数据表。
比较简单,将表中的某列删掉即可
ALTER TABLE books_book DROP COLUMN num_
使用sqlite3时,会有些麻烦,sqlite3不支持删除列操作,只有有限地&ALTER TABLE&支持。你可以使用它来在表的末尾增加一列,可更改表的名称。 如果需要对表结构做更复杂的改变,则必须重新建表。重建时可以先将已存在的数据放到一个临时表中,删除原表, 创建新表,然后将数据从临时表中复制回来。
如,假设有一个&t1&表,其中有&&a&, &b&, &c&&三列, 如果要删除列&c :
BEGIN TRANSACTION;
CREATE TEMPORARY TABLE t1_backup(a,b);
INSERT INTO t1_backup SELECT a,b FROM t1;
DROP TABLE t1;
CREATE TABLE t1(a,b);
INSERT INTO t1 SELECT a,b FROM t1_
DROP TABLE t1_
删除多对多关联字段
删掉多对多关联的数据表即可
DROP TABLE books_book_
删除数据表即可
DROP TABLE books_
django 项目提供了一个导出的方法 python manage.py dumpdata, 不指定 appname 时默认为导出所有的app
python manage.py dumpdata myapp & myapp.json
导出的文件内容格式:
&model&: &myapp.person&,
&fields&: {
&first_name&: &John&,
&last_name&: &Lennon&
&model&: &myapp.person&,
&fields&: {
&first_name&: &Paul&,
&last_name&: &McCartney&
数据导入:
python manage.py loaddata myapp.json
导出用户数据:
python manage.py dumpdata auth & auth.json
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致5119人阅读
C/C++/C#/python(46)
Field Types
常用参数:
如果设置为 True , Django 存放一个 NULL 到数据库字段。默认为 False。
如果设置为 True , 此 field 允许为 blank (空白),默认为 False。
一个2元元组的元组或者列表,如果执行 choices , Django 的 admin 就会使用 选择框而不是标准的 text 框填写这个 field。
YEAR_IN_SCHOOL_CHOICES = (
& & (u'FR', u'Freshman'),
& & (u'SO', u'Sophomore'),
& & (u'JR', u'Junior'),
& & (u'SR', u'Senior'),
& & (u'GR', u'Graduate'),
2元元组的第一个元素是要存入 database 的数据,第二个元素是 admin 的界面 显示的数据。&
使用了 choices 参数的 field 在其 model 示例里,可以用 &get_field的名 字_display& 方法 显示 choices 的显示字串(就是2元元组的第二个数据)。示 例:
from django.db import models
class Person(models.Model):
& & GENDER_CHOICES = (
& & & & (u'M', u'Male'),
& & & & (u'F', u'Female'),
& & name = models.CharField(max_length=60)
& & gender = models.CharField(max_length=2, choices=GENDER_CHOICES)
&&& p = Person(name=&Fred Flinstone&, gender=&M&)
&&& p.save()
&&& p.gender
&&& p.get_gender_display()
field 的默认值,可以使用可调用对象(a callable object),如果使用可调用 对象,那么每次创建此 model 的新对象时调用可调用对象。常见如 datatime 。
help_text 的值可以在 admin form 里显示,不过即使不使用 admin ,也可以当 做描述文档使用。
primary_key
如果为 True , 这个 field 就是此 model 的 primary key 。
如果为 True, 此 field 在这个 table 里必须唯一。
verbose_name
verbose,详细的意思。verbose_name,就可以理解为详细的名字吧。
除了ForeignKey, ManyToManyField 和 OneToOneField之外,每个类型的字段都有一个可选的第一位置参数-详细的名字。如果没有给出详细的名称,Django将自动使用字段的属性名来代替他。替代过程中会转换下划线为空格。
该字段中,名字的详情为”person’s first name”:
first_name = models.CharField(&person's first name&, max_length=30)
以下字段中,first_name的详细名字为&first name&:
first_name = models.CharField(max_length=30)
ForeignKey, ManyToManyField 和 OneToOneField要求第一个参数是模型的类,所以需要使用verbose_name关键字参数,如:
poll = models.ForeignKey(Poll, verbose_name=&the related poll&)
sites = models.ManyToManyField(Site, verbose_name=&list of sites&)
place = models.OneToOneField(Place, verbose_name=&related place&)
在需要的时候Django会自动大写 verbose_name的首字母。
原来verbose_name字段就是为ForeignKey, ManyToManyField 和 OneToOneField这三种关系准备的啊!
常见Filed Types
1、AutoField
如果没有指明主键,就会产生一个自增的主键。
2、BigIntegerField
64位的整型数值,从 -2^63 (-4775808) 到 2^63-1(4775807)。
3、BinaryField
存储原始二进制数据,仅支持字节分配。功能有限。
4、BooleanField
布尔型和NullBooleanField有区别,true/false,本类型不允许出现null。
5、CharField
字符串,一般都在创建时写入max_length参数。
6、CommaSeparatedIntegerField
逗号分隔的整数,考虑到数据库的移植性,max_length参数应该必选。
原文解释:A field of integers separated by commas. As in CharField, the max_length argument is required and the note about database portability mentioned there should be heeded.
7、DateField
时间,对应Python的datetime.date,额外的参数:DateField.auto_now表示是否每次修改时改变时间,DateField.auto_now_add 表示是否创建时表示时间,一般来说数据库重要的表都要有这样的字段记录创建字段时间个最后一次改变的时间。关于时间的话,建议timestamp,当然 python的话还是DateTime吧。
8、DateTimeField
对应Python的datetime.datetime,参照参数(7)。
9、DecimalField
固定精度的十进制数,一般用来存金额相关的数据。对应python的Decimal,额外的参数包括DecimalField.max_digits和DecimalField.decimal_places ,这个还是要参照一下mysql的Decimal类型,
例如:price = models.DecimalField(max_digits=8,decimal_places=2)
10、EmailField
字符串,会检查是否是合法的email地址
11、FileField
class FileField([upload_to=None, max_length=100, **options])
存文件的,参数upload_to在1.7之前的一些老版本中必选的
12、FloatField
浮点数,必填参数:max_digits,数字长度;decimal_places,有效位数。
13、ImageField
class ImageField([upload_to=None, height_field=None, width_field=None, max_length=100, **options])
图片文件类型,继承了FileField的所有属性和方法。参数除upload_to外,还有height_field,width_field等属性。
14、IntegerField
[-,&]的取值范围对Django所支持的数据库都是安全的。
15、IPAddressField
点分十进制表示的IP地址,如10.0.0.1
16、GenericIPAddressField
ip v4和ip v6地址表示,ipv6遵循RFC 4291section 2.2,
17、NullBooleanField
可以包含空值的布尔类型,相当于设置了null=True的BooleanField。
18、PositiveIntegerField
正整数或0类型,取值范围为[0 ,]
19、PositiveSmallIntegerField
正短整数或0类型,类似于PositiveIntegerField,取值范围依赖于数据库特性,[0 ,32767]的取值范围对Django所支持的数据库都是安全的。
20、SlugField
只能包含字母,数字,下划线和连字符的字符串,通常被用于URLs表示。可选参数max_length=50,prepopulate_from用于指示在admin表单中的可选值。db_index,默认为True。
21、SmallIntegerField
小整数字段,类似于IntegerField,取值范围依赖于数据库特性,[-3]的取值范围对Django所支持的数据库都是安全的。
22、TextField
23、TimeField
时间,对应Python的datetime.time
24、URLField
存储URL的字符串,默认长度200;verify_exists(True),检查URL可用性。
25、FilePathField
class FilePathField(path=None[, match=None, recursive=False, max_length=100, **options])
类似于CharField,但是取值被限制为指定路径内的文件名,path参数是必选的。
参考资料:
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:277283次
积分:2810
积分:2810
排名:第8841名
原创:42篇
转载:78篇
(1)(1)(2)(2)(7)(2)(1)(4)(1)(3)(3)(5)(2)(1)(4)(1)(1)(7)(6)(1)(8)(14)(10)(23)(5)(2)(3)Migrations
Django中对Model进行修改是件麻烦的事情,syncdb命令仅仅创建数据库里还没有的表,它并不对已存在的数据表进行同步修改,也不处理数据模型的删除。 如果你新增或修改数据模型里的字段,或是删除了一个数据模型,你需要手动在数据库里进行相应的修改或者使用South。Django 1.7中已经集成了South的代码,提供了3个新命令:
migrate: 用于执行迁移动作,具有syncdb的功能
makemigrations: 基于当前的model创建新的迁移策略文件
sqlmigrate: 显示迁移的SQL语句,具有sqlall的功能
使用起来很简单,对Model做了修改后,使用makemigrations记录修改:
$ python manage.py makemigrations
Migrations for 'books':
0003_auto.py:
- Alter field author on book
你的Model会被扫描, 然后与migrations文件夹中以前的版本作比较, 然后生成本次迁移文件。
有了新的migration文件,就可以使用migrate修改数据库模式:
$ python manage.py migrate
Operations to perform:
Synchronize unmigrated apps: sessions, admin, messages, auth, staticfiles, contenttypes
Apply all migrations: books
Synchronizing apps without migrations:
Creating tables...
Installing custom SQL...
Installing indexes...
Installed 0 object(s) from 0 fixture(s)
Running migrations:
Applying books.0003_auto... OK
也可以针对单独的app生成migration:
$ python manage.py makemigrations your_app_label
也可以对数据库中的数据进行修改,首先建立一个空的migration文件:
python manage.py makemigrations --empty yourappname
文件的内容如下:
# -*- coding: utf-8 -*-
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('yourappname', '0001_initial'),
operations = [
如果想修改某个Model例如Person的数据,设置其name字段:
# -*- coding: utf-8 -*-
from django.db import models, migrations
def combine_names(apps, schema_editor):
# We can't import the Person model directly as it may be a newer
# version than this migration expects. We use the historical version.
Person = apps.get_model("yourappname", "Person")
for person in Person.objects.all():
person.name = "%s %s" % (person.first_name, person.last_name)
person.save()
class Migration(migrations.Migration):
dependencies = [
('yourappname', '0001_initial'),
operations = [
migrations.RunPython(combine_names),
最后运行&python manage.py migrate即可。这样Person中的所有对象的name字段都设置好了。
依据Model修改关系数据库是开发中的一个重要的问题,解决这个问题可以提升开发速度,不过要在生产环境中随便使用migrate操作数据库还是很危险的,有时候需要手动修改数据库。
手动修改数据库
当处理模型修改的时候:
如果模型包含一个未曾在数据库里建立的字段,Django会报出错信息。 当你第一次用Django的数据库API请求表中不存在的字段时会导致错误。
Django不关心数据库中是否存在未被模型表示的table。
在你的模型里添加字段。下例向Book模型添加num_pages字段:
class Book(models.Model):
title = models.CharField(max_length=100)
authors = models.ManyToManyField(Author)
publisher = models.ForeignKey(Publisher)
publication_date = models.DateField()
**num_pages = models.IntegerField(blank=True, null=True)**
def __unicode__(self):
return self.title 
运行manage.py sqlall yourappname来测试模型新的CREATE TABLE语句。&
CREATE TABLE "books_book" (
"id" serial NOT NULL PRIMARY KEY,
"title" varchar(100) NOT NULL,
"publisher_id" integer NOT NULL REFERENCES "books_publisher" ("id"),
"publication_date" date NOT NULL,
"num_pages" integer NULL
开启你的数据库的交互命令界面(比如,psql或者mysql,或者可以使用manage.py dbshell。 执行ALTER TABLE语句来添加新列。
ALTER TABLE books_book ADD COLUMN num_  
添加 非NULL 字段
先创建 NULL 型的字段,然后将该字段的值填充为某个默认值,然后再将该字段改为 NOT NULL 型
ALTER TABLE books_book ADD COLUMN num_
UPDATE books_book SET num_pages=0;
UPDATE books_book SET num_pages = NULL;
ALTER TABLE &YourTable& ADD &NewColumn& &NewColumnType& NOT NULL DEFAULT &DefaultValue&;
添加ForeignKey或ManyToManyField
添加外键即是添加key_id的integer字段,添加多对多字段是创建一个新的数据表。
比较简单,将表中的某列删掉即可
ALTER TABLE books_book DROP COLUMN num_
使用sqlite3时,会有些麻烦,sqlite3不支持删除列操作,只有有限地&ALTER TABLE&支持。你可以使用它来在表的末尾增加一列,可更改表的名称。 如果需要对表结构做更复杂的改变,则必须重新建表。重建时可以先将已存在的数据放到一个临时表中,删除原表, 创建新表,然后将数据从临时表中复制回来。
如,假设有一个&t1&表,其中有&"a", "b", "c"&三列, 如果要删除列&c :
BEGIN TRANSACTION;
CREATE TEMPORARY TABLE t1_backup(a,b);
INSERT INTO t1_backup SELECT a,b FROM t1;
DROP TABLE t1;
CREATE TABLE t1(a,b);
INSERT INTO t1 SELECT a,b FROM t1_
DROP TABLE t1_
删除多对多关联字段
删掉多对多关联的数据表即可
DROP TABLE books_book_
删除数据表即可
DROP TABLE books_
django 项目提供了一个导出的方法 python manage.py dumpdata, 不指定 appname 时默认为导出所有的app
python manage.py dumpdata myapp & myapp.json
导出的文件内容格式:
"model": "myapp.person",
"fields": {
"first_name": "John",
"last_name": "Lennon"
"model": "myapp.person",
"fields": {
"first_name": "Paul",
"last_name": "McCartney"
数据导入:
python manage.py loaddata myapp.json
导出用户数据:
python manage.py dumpdata auth & auth.json
阅读(...) 评论()4973人阅读
Django(18)
model field 类型
1、AutoField
& & &一个自增的IntegerField,一般不直接使用,Django会自动给每张表添加一个自增的primary key。
2、BigIntegerField
& & 64位整数, -4775808 到 4775807。默认的显示widget 是 TextInput.
3、BinaryField ( Django 1.6 版本新增 )
& & 存储二进制数据。不能使用 filter 函数获得 QuerySet
4、BooleanField
& & True/False,默认的widget 是 CheckboxInput。
如果需要置空,则必须用 NullBooleanField 代替。
Django 1.6 修改:BooleanField 的默认值 由 False 改为 None,在 default 属性未设置的情况下。
5、CharField
& & 存储字符串。必须有 max_length 参数指定长度。默认的form widget 是 TextInput
如果字符串巨长,推荐使用 TextField。
6、CommaSeparatedIntegerField
& & 一串由逗号分开的整数。必须有 max_length 参数。
7、DateField
& & 日期,与python里的datetime.date 实例同。有以下几个可选的选项,均为bool类型:
&& & DateField.auto_now: 每次执行 save 操作的时候自动记录当前时间,常作为最近一次修改的时间 使用。注意:总是在执行save 操作的时候执行,无法覆盖。
&DateField.auto_now_add: 第一次创建的时候添加当前时间。常作为 创建时间 使用。注意:每次create 都会调用。
默认的form widget 是 TextInput。
注意:设置auto_now 或者 auto_now_add 为 True 会导致当前自动拥有 editable=False 和 blank = True 设置。
8、DateTimeField
& & 日期+时间。与python里的 datetime.datetime 实例同。常用附加选项和DateField一样。
默认 form widget 是一个 TextInput
9、DecimalField
& & 设置了精度的十进制数字。
A fixed-precision decimal number, represented in Python by a Decimal instance. Has two required arguments:
DecimalField.max_digits
The maximum number of digits allowed in the number. Note that this number must be greater than or equal to decimal_places.
DecimalField.decimal_places?
The number of decimal places to store with the number.
For example, to store numbers up to 999 with a resolution of 2 decimal places, you’d use:
models.DecimalField(..., max_digits=5, decimal_places=2)
And to store numbers up to approximately one billion with a resolution of 10 decimal places:
models.DecimalField(..., max_digits=19, decimal_places=10)
The default form widget for this field is a TextInput.
10、EmailField
& & 在 CharField 基础上附加了 邮件地址合法性验证。不需要强制设定 max_length
注意:当前默认设置 max_length 是 75,虽然已经不符合标准,但未了向前兼容,未修改。
11、FileField
& & 文件上传。不支持 primary_key 和 unique 选项。否则会报 TypeError 异常。
必须设置 FileField.upload_to 选项,这个是 本地文件系统路径,附加在 MEDIA_ROOT 设置的后边,也就是 MEDIA_ROOT 下的子目录相对路径。
默认的form widget 是 FileInput。
使用 FileField 和 ImageField 需要以下步骤:
&& &(1)修改 settting.py,设置 MEDIA_ROOT(使用绝对路径),指定用户上传的文件保存在哪里。设置 MEDIA_URL,作为 web地址 前缀,要保证 MEDIA_ROOT 目录对运行 Django 的用户是可写的;
(2)在 model 中增加 FileField 或 ImageField,并指定 upload_to 选项指定存在 MEDIA_ROOT 的哪个子目录里;&
(3)存在数据库里的是什么东西呢?是 File 或 Image相对于 MEDIA_ROOT 的相对路径,你可以在 Django 里方便的使用这个地址,比如你的 ImageField 叫 tupian,你可以在 template 中用{{object.tupian.url}}。
举个例子:假设你的 MEDIA_ROOT='/home/media',upload_to 设置为 'photos/%Y/%m/%d','%Y/%m/%d' 部分使用strftime() 提供。如果你在 日上传了一个文件,那么它就存在 /home/media/photos// 下。
文件在 model实例 执行 save操作的同时保存,所以文件在model实例执行save之前,硬盘的上的文件名的是不可靠的。
注意:要验证用户上传的文件确实是自己需要的,以防止安全漏洞出现。
默认情况下,FileField 在数据库中表现为 varchar(100) 的一个列。你可以使用 max_length 来改变这个大小。
11、FileField 和 FieldFile
& & 当你访问 一个 model 内的 FileField 时,将得到一个 FieldFile 实例来访问实际的文件。这个类提供了几个属性和方法用来和实际的文件数据交互:
FieldFile.url:只读属性,获取文件的相对URL地址;
FieldFile.open( mode = 'rb' ):打开文件,和python 的 open 一样;
FieldFile.close():和 python 的 file.close() 一样;
FieldFile.save( name, content, save=True ):name 是文件名,content 是包含了文件内容的 django.core.files.File 实例,与 python 的 file 不一样。The optional save argument controls whether or not the instance is saved
after the file has been altered. Defaults to True。
两种方式 进行 content 设置:
from django.core.files import File
f = open( 'helo.txt' )
content = File(f)
另一种是:
from django.core.files.base import ContentFile
content = ContentFile( 'helloworld' )
更多内容可见:/en/dev/topics/files/
FieldFile.delete( save = True ):删除当前的文件。如果文件已经打开,则自动关闭。The optional save argument controls whether or not the instance is saved after the file has been deleted. Defaults to True.
值得注意的是:当一个 model实例 被删除之后,相关联的文件并没有被删除,需要自己清除!
12、FloatField
& & 与 python 里的 float 实例相同,默认的 form widget 是 TextInput。
虽然 FloatField 与 DecimalField 都是表示实数,但却是不同的表现形式,FloatField 用的是 python d float 类型,但是 DecimalField 用的却是 Decimal 类型。区别可见:http://docs.python.org/2.7/library/decimal.html#decimal
13、ImageField
& & 在 FileField 基础上加上是否是合法图片验证功能的一个类型。
除了 FileField 有的属性外,ImageField 另有 height 和 width 属性。
To facilitate querying on those attributes, ImageField has two extra optional arguments:
ImageField.height_field
Name of a model field which will be auto-populated with the height of the image each time the model instance is saved.
ImageField.width_field
Name of a model field which will be auto-populated with the width of the image each time the model instance is saved.
注意:需要安装 PIL 或者 Pillow 模块。在数据库中同样表现为 varchar(100),可通过 max_length 改大小。
14、IntegerField
& & 整数,默认的form widget 是 TextInput。
15、IPAddressField
& & IP地址,字符串类型,如 127.0.0.1。默认 form widget 是 TextInput。
16、TextField
& & 大文本,巨长的文本。默认的 form widget 是 Textarea。
注意,如果使用 MySQLdb 1.2.1p2 和 utf-8_bin 编码,会有一些问题/en/dev/ref/databases/#mysql-collation。具体问题未分析,可自行避开。
17、URLField
& & 加了 URL 合法性验证的 CharField。
默认的 form widget 是 TextInput。
默认max_length=200,可修改。
18、ForeignKey / ManyToManyField / OneToOneField / SmallIntegerField / SlugField / PositiveSmallIntegerField / PositiveIntegerField
Field 选项
& & & boolean 值,缺省设置为false。通常不将其用于字符型字段上,比如CharField,TextField上。字符型字段如果没有值会返回空字符串。
& & & boolean 值,该字段是否可以为空。如果为假,则必须有值。
& & &元组值,一个用来选择值的2维元组。第一个值是实际存储的值,第二个用来方便进行选择。如SEX_CHOICES=((‘F’,’Female’),(‘M’,’Male’),)
& & & string 值,指定当前列在数据库中的名字,不设置,将自动采用model字段名;
& & & boolean 值,如果为True将为此字段创建索引;
& & & 给当前字段设定的缺省值,可以是一个具体值,也可以是一个可调用的对象,如果是可调用的对象将每次产生一个新的对象;
& & & boolean 值,如果为假,admin模式下将不能改写。缺省为真;
error_messages
& & & 字典,设置默认的出错信息,可覆盖的key 有 null, blank, invalid, invalid_choice, 和 unique。
& & & admin模式下帮助文档
& & & form widget 内显示帮助文本。
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
& & & boolean值,数据是否进行唯一性验证;
unique_for_date
& & & 字符串类型,值指向一个DateTimeField 或者 一个 DateField的列名称。日期唯一,如下例中系统将不允许title和pub_date两个都相同的数据重复出现
& & & title = meta.CharField( maxlength=30, unique_for_date=’pub_date’ )
unique_for_month / unique_for_year
& & & 用法同上
verbose_name
& & & string类型。更人性化的列名。
validators
& & & & 有效性检查。无效则抛出 django.core.validators.ValidationError 异常。
如何实现检查器 见:/en/dev/ref/validators/
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:773576次
积分:8586
积分:8586
排名:第1504名
原创:201篇
转载:149篇
评论:47条
(1)(6)(4)(12)(3)(4)(21)(2)(2)(5)(3)(9)(6)(7)(3)(7)(9)(2)(5)(2)(7)(8)(7)(4)(5)(1)(3)(4)(6)(7)(4)(1)(3)(8)(1)(1)(3)(3)(3)(14)(10)(16)(15)(5)(19)(26)(12)(1)(15)(13)(12)(1)}

我要回帖

更多关于 django null true 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信