django的Model里面的各种字段 未完成?????
null 是针对数据库而言,如果 null=True, 表示数据库的该字段可以为空,即在Null字段显示为YES。
blank 是针对表单(或者说是针对admin)的,如果 blank=True,表示你的表单填写该字段的时候可以不填,但是对数据库来说,没有任何影响
to 就是直接关联的表,tofield是关联它的主键,不写这个的话,默认关联主键
max_length 选项
设置CharField型字段的最大长度
default 选项
为字段设置一个默认值
verbose_name 选项
该字段会在admin后台显示名称
unique 选项
设置为True时,此字段在数据库中必须是唯一的。
除了ManyToManyField\OneToOneField和FileField 以外的其他字段类型都可以使用这个设置。
choices 选项
它是一个可迭代的结构(e.g., 列表或元组) 。由可迭代的二元组组成 (e.g. [(A, B), (A, B) ...]), 用来给字段提供选择项。如果设置了 choices , 默认表格样式就会显示选择框,而不是标准的文本框,而且这个选择框的选项就是 choices 中的元组。
每个元组中的第一个元素,是存储在数据库中的值;第二个元素是该选项描述。 比如:
YEAR_IN_SCHOOL_CHOICES = (
('FR', 'Freshman'),
('SO', 'Sophomore'),
('JR', 'Junior'),
('SR', 'Senior'),
)
一般来说,最好在模型类内部定义choices,然后再给每个值定义一个合适名字:
from django.db import models
class Student(models.Model):
FRESHMAN = 'FR'
SOPHOMORE = 'SO'
JUNIOR = 'JR'
SENIOR = 'SR'
YEAR_IN_SCHOOL_CHOICES = (
(FRESHMAN, 'Freshman'),
(SOPHOMORE, 'Sophomore'),
(JUNIOR, 'Junior'),
(SENIOR, 'Senior'),
)
year_in_school = models.CharField(
max_length=2,
choices=YEAR_IN_SCHOOL_CHOICES,
default=FRESHMAN,
)
def is_upperclass(self):
return self.year_in_school in (self.JUNIOR, self.SENIOR)
当然也可以在模型类的外部定义choices然后引用它, 但是在模型类中定义choices和其每个choice的name(即元组的第二个元素)可以保存所有使用choices的信息, 也使得choices更容易被应用(例如, Student.SOPHOMORE 可以在任何引入 Student 模型的地方生效)。
也可以将选项归类到已命名的组中用来达成组织整理的目的:
MEDIA_CHOICES = (
('Audio', (
('vinyl', 'Vinyl'),
('cd', 'CD'),
)
),
('Video', (
('vhs', 'VHS Tape'),
('dvd', 'DVD'),
)
),
('unknown', 'Unknown'),
)
每个元组的第一个元素是组的名字。 第二个元素是一组可迭代的二元元组, 每一个二元元组包含一个值和一个适合人看的名字构成一个选项。 分组的选项可能会和未分组的选项合在同一个list中。 (就像例中的 unknown 选项)。
对于包含 choices 的模型字段, Django 将会加入一个方法来获取当前字段值的易于理解的名称 (即元组的第二个值)。参见数据库API文档中的 get_FOO_display() 。
choices 只要是可迭代的对象就行 – 并不一定要是列表和元组。这样你可以动态构建choices。 但是如果你自己搞不定动态的 choices 。你最好还是使用 ForeignKey 来构建一个合适的数据库表。 而对于静态数据来说, choices 是不改变的。
除非在字段中设置了 blank=False 否则将选择框中将包含一个 "---------" 的标签。 只要在添加一个 None 到 choices 元组中就可以改变这一行为。e.g. (None, 'Your String For Display') , 或者, 你可以用一个空字符串代替 None 比如在一个 CharField 。
primary_key 选项
如果设置为True,则该字段成为Model的主键,django默认为自动生成一个主键id。
help_text 选项
会在form表单控件中显示help文本。
unique_for_date 选项
设置一个DateField和DateTimeField字段时,表示要求该字段相应的日期字段值是唯一的。
例如: 你有一个title 字段设置为unique_for_date=”pub_date”,那么Django将不允许记录具有相同的title和pub_date.
unique_for_month 选项
与 unique_for_date类似,只要求字段对月份是唯一的。
unique_for_year 选项
只对年份要求唯一。
limit_choices_to
此字段去零碎知识中找:http://www.cnblogs.com/heysn21/articles/8613069.html
IntegerField
整数字段。默认的form widget是TextInput。
http://www.cnblogs.com/zknublx/p/5944779.html 参考网址:Django Models的数据类型 未完待续?????
关联其他应用的model
rb_user = models.OneToOneField(to="rbac.UserInfo", null=True) 关联其他app的Model app名.Model名
——————————————————————————————————————————————
浙公网安备 33010602011771号