Django Model one

models :URL---->http://www.cnblogs.com/wupeiqi/p/6216618.html

null                     数据库中字段是否可以为空

do_column                数据库中字段的列名

default                  数据库中字段的默认值

primary_key              数据库中字段是否为主键

db_index                 数据库中字段是否可以建立索引

unique                   数据库中字段是否可以建立唯一索引

unique_for_data          数据库中字段【日期】部分是否可以建立唯一索引

unique_for_month         数据库中字段【月】部分是否可以建立唯一索引

unique_for_year          数据库中字段【年】部分是否可以建立唯一索引

verbose_name              Admin中显示的字段名称

blank                     Admin中是否允许用户输入为空

editable                  Admin中是否可以编辑

help_test                 Admin中该字段的提示信息

choices                   Admin中选择框的内容,用不变动的数据放在内存中从而避免跨表操作

                          如:gf = models.IntegerField(choices=[(0, '何穗'),(1, '大表姐'),],default=1)

error_messages            自定义错误信息{字典类型},定制想要显示的错误信息

                          字典键:null, blank, invalid, invalid_choice, unique, and unique_for_data

                           {'null':"不能为空",'invalid':"格式错误"}

                                                    

#自定义自增列

nid = models.AutoFieid(primary_key=True)

#元信息

class UserInfo(models.Model):

        nid = models.AutoFieid(primary_key=True)

        username = models.Charfiled(max_length=32)

        class Meta:

            db_table = "table_name"  #数据库中生成的表名称,默认:app名称+下划线+类名

            index_together = {("pub_date","deadline"),} #联合索引

            unique_together = (("pub_date","deadline"),) #联合唯一索引

            vernose_name = "用户名"  #Admin 中显示的表名称

#一对多的操作:

to,                     要进行关联的表名

to_field=None,          要关联的字段名称,默认是主键ID

on_delete=None          当删除关联表中的数据时

    models.CASCADE,删除关联的数据,与之关联的也删除

    models.DO_NOTHING,引发错误 integrityError

    models.PROTECT,引发错误ProtectedError

    models.SET_NULL,删除关联的数据,与之关联的值设置为null(前提FK字段需要被设置允许为null)

    models.SET_DEFAULT,删除关联的数据,与之关联的值设置为默认值(前提FK字段需要设置默认值default)

    related_name = None, 反向操作时,使用的字段名,用于代替【表名_set】

    related_query_name = None,反向操作时,使用的字段名,用于代替【表名】

    limt_choice_to = None,在Admin或ModelForm 中显示关联书籍是们提供的条件

    db_constraint=True 知否在数据库中创建外键约束

    patent_link=False  在Adimn中是否显示关联数据

   

ORM:

    create(),可以接受字典类型数据 **kwargs

    delete()

    get(),获取单条数据,不存在则报错(不建议)

    all(),获取全部数据

    filter(),获取指定条件的数据

    exclude(),获取除条件之外的数据

    update()将指定条件的数据更新,支持字典类型 **kwargs

   

    count()获取匹配中的个数

    id__gt=1 获取ID 大于1的值

    id__gte=1获取ID 大于等于1的值

    (id__lt=10,id__gt=1),获取ID大于1小于10的值

    id_in[11,22,33,] 获取ID 等于11,22,33,的值

    pub_date__isnull = True

    (name__contains="ale") ,模糊匹配

    (name__icontains="Ale"),大小写不敏感

    (id__range=[1,2]) #范围 between ,end

    (name='seven').order_by('id')     #asc

    (name='seven').order_by('-id')    #desc

   

    group by

    from django.db.models import Count, Min, Max, Sum

    values('id').annotate(c=Count(num))

    models.Tb1.objects.all()[10:20] 切片

    Entry.objects.get(title__regex=r'^(An?|The) +')

    Entry.objects.get(title__iregex=r'^(an?|the) +')

    date

    Entry.objects.filter(pub_date__date=datetime.date(2005, 1, 1))

    Entry.objects.filter(pub_date__date__gt=datetime.date(2005, 1, 1))

    year

    Entry.objects.filter(pub_date__year=2005)

    Entry.objects.filter(pub_date__month__gte=6)

    select_related(self,*fields)   #性能相关:表之间进行join链表操作,一次性获取关联的数据

    prefetch_related(self,*lookups) #性能相关:多表连表操作时速度会慢,使用其执行多次SQL查询在Python代码中实现连表操作

    aggregate() 聚合函数,获取字典类型聚合结果

    bulk_create() 批量插入

    get_field_dispay: 返回choice字段可读的值  (1,'成功')  ——return '成功'

    get_or_create(self,default) #如果存在,则获取,否则创建   !!!!

    update_or_create(self,default) #如果存在,则更新,否则创建 !!!!

    first(self)获取第一个

    lase(self)获取最后一个

    in_bulk(self,id_list=None):

    id_list = [11,22,33]

    exists(self)

   

猜你喜欢

转载自www.cnblogs.com/mihon/p/8980883.html