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名

  

 

 

 ——————————————————————————————————————————————

 

 

 

 

 

 

 

 

posted @ 2018-03-21 17:27  Justin壮志凌云  阅读(108)  评论(0)    收藏  举报