Django系列教程(2)-- 模型的创建

来源:互联网 发布:江苏语音网络系统注册 编辑:程序博客网 时间:2024/06/06 07:06

定义模型

Django的模型由一个在model.py中定义的模型类来定义,每一个模型类对应于一个数据库中的表结构,而模型类的属性则对应着数据库表结构中的列

定义属性

  • Django模型类的属性分为属性类型和属性选项两个部分

    属性1名 = 属性类型(属性选项)

  • 属性类型

    AutoField:根据Id自动增长的整数类型
    BooleanField:ture/false字段,默认的表单控制是CheckboxInput
    NullBooleanField:null/true/false字段
    CharField(max_length=字符长度):字符串,默认的表单样式是TextInput
    TextField:大文本字段
    IntegerField:整数
    DecimalField(max_digits=None,decimal_places=None):十进制浮点数
    FloatField:float类型的浮点数
    DateField(auto_now=False,auto_now_add=False):日期,使用python中的datetime.date
    TimeField:时间,使用python中的datetime.time
    DateTimeField:日期+时间 ,使用python中的datetime.time
    FileField:一个上传文件的字段
    ImageField:继承了FileField的所有属性和方法,但它会对上传对象进行校验,确保其是图片

  • 属性选项
    通过属性选项,可以对属性进行限制

    null:对应着sql中的null类型的变量
    blank:对应着表单中的空白字段
    db_clolumn:字段的名称,如未指定,则使用属性的名称
    db_index:若值为True,则在表中为此字段创建索引
    default : 默认值
    primary_key:若为True,则该字段会成为主键
    unique:如果为True,这个字段在表中必须有唯一值

  • 关系

关系的类型包括:
ForeignKey:一对多,将字段定义在多的一端
ManyToManyField:多对多,将字段定义在两端中
OneToOneField:一对一,将字段定义在任意一端中


  • 元选项

在模型类中定义类Meta,用于设置元信息
元信息db_table:定义表名
ordering:对象的默认排序字段 ordering=[‘字段名’],字段名前加-表示倒序,不加-表示正序

类的属性

  • objects:是Manage类型默认的对象,用于和数据库交互
  • 可以明确指定模型类的管理器
class BookInfo(models.Model):        ...    books = models.Manage() #这样的话,books就成了指定的管理其对象
  • 当然,也可以自己定义一个管理器类

    自定义管理器用于两种情况,向管理器中添加额外的方法:例如创建对象
    修改管理器返回的原始查询集

class BookInfoManager(models.Manager):    def get_queryset(self):        return super(BookInfoManager,self).get_queryset().filter(isDelete=False)
阅读全文
0 0