跳转至

model


命令

python manage.py makemigrations 应用名

python manage.py migrate 应用名


模型

from django.db import models 导报

class 表名(models.Model):
    字段名 = models.类型Field(选项)

选项

verbose_name='名称' 说明

min_length = 5 最小长度

max_length=20 最大长度

nul=False 是否可以为空

blank=True|False

default='值' 默认值

primary_key=True|False 设置主键,类型Auto

unique=False 唯一索引

db_index=False 普通索引

choices=(('',''),('',''),...) 单选

upload_to='路径' 上传路径

外键需要添加

on_delete=models.CASCADE 级联

on_delete=models.DO_NOTHING 不级联

类型

Auto 整型,自增长,用于主键

Char 字符串

Boolean 布尔

Date 日期

DateTime 日期时间

Decimal 精确小数

Float 浮点小数

Integer 整型

Text 文本内容,无限长度

Image 图片

File 文件

外键

OneToOne 一对一

ForeignKey(没有Field) 一对多

ManyTomany 多对多


方法

放在模型类里的方法

设置

class Meta:
    verbose_name = '名称'
    verbose_name_plural = verbose_name    # 显示的名称
    db_table='名称'                 # 数据表名
    proxy = True                  # 不进行注册(不生成表),还会保留Models功能
    unique_together = ('字段', '字段')    # 联合唯一索引

显示数据

def __str__(self):
    return self.字段                    # 显示数据

方法

像字段一样调用

@property
def 名称(self):
    from 应用.models import             # 可以导入类
    return self.某表_set.all().count()    # 可以有return,self代表本表,可以在HTML调用

名称.short_description = '国家'  # 在admin显示字段名

扩展

数据增加的时间

add_time = models.DateTimeField('发帖时间',auto_now_add=True)
last_edit = models.DateTimeField('修改时间',auto_now=True)