Django:Django中的ORM
一、Django项目使用MySQL数据库 1,在Django项目的settings.py,文件中,配置数据库连接信息: DATABASES =: : ,
: : : : 3306
2,在Django项目中__init__.py文件中写如下代码,告诉Django使用pymysql模块连接MySQL数据库: pymysql.install_as_MySQLdb()
二,Model 在Django中model是你数据的单一、明确的信息来源。它包含了你存储的数据的重要字段和行为。通常,一个模型(model)映射到一个数据库表, 基本情况:
三,快速入门 下面这个例子定义了一个?Person?模型,包含?first_name?和?last_name。 from django.db import models
class Person(models.Model): first_name?和?last_name?是模型的字段。每个字段被指定为一个类属性,每个属性映射到一个数据库列。 上面的?Person?模型将会像这样创建一个数据库表: CREATE TABLE myapp_person (
"id" serial NOT NULL PRIMARY KEY,"first_name" varchar(30) NOT NULL,"last_name" varchar(30) NOT NULL
);
一些说明:
四,字段 - int自增列,必须填入参数 primary_key=
BigAutoField(AutoField)
</span>- bigint自增列,必须填入参数 primary_key=<span style="color: #000000">True
注:当model中如果没有自增列,则自动会创建一个列名为id的列
</span><span style="color: #0000ff">from</span> django.db <span style="color: #0000ff">import</span><span style="color: #000000"> models
</span><span style="color: #0000ff">class</span><span style="color: #000000"> UserInfo(models.Model):
</span><span style="color: #008000">#</span><span style="color: #008000"> 自动创建一个列名为id的且为自增的整数列</span>
username = models.CharField(max_length=32<span style="color: #000000">)
</span><span style="color: #0000ff">class</span><span style="color: #000000"> Group(models.Model):
</span><span style="color: #008000">#</span><span style="color: #008000"> 自定义自增列</span>
nid = models.AutoField(primary_key=<span style="color: #000000">True)
name </span>= models.CharField(max_length=32<span style="color: #000000">)
SmallIntegerField(IntegerField):
</span>- 小整数 -32768 ~ 32767<span style="color: #000000">
PositiveSmallIntegerField(PositiveIntegerRelDbTypeMixin,IntegerField)
</span>- 正小整数 0 ~ 32767<span style="color: #000000">
IntegerField(Field)
</span>- 整数列(有符号的) -2147483648 ~ 2147483647<span style="color: #000000">
PositiveIntegerField(PositiveIntegerRelDbTypeMixin,IntegerField)
</span>- 正整数 0 ~ 2147483647<span style="color: #000000">
BigIntegerField(IntegerField):
</span>- 长整型(有符号的) -9223372036854775808 ~ 9223372036854775807<span style="color: #000000">
BooleanField(Field)
</span>-<span style="color: #000000"> 布尔值类型
NullBooleanField(Field):
</span>-<span style="color: #000000"> 可以为空的布尔值
CharField(Field)
</span>-<span style="color: #000000"> 字符类型
</span>-<span style="color: #000000"> 必须提供max_length参数, max_length表示字符长度
TextField(Field)
</span>-<span style="color: #000000"> 文本类型
EmailField(CharField):
</span>-<span style="color: #000000"> 字符串类型,Django Admin以及ModelForm中提供验证机制
IPAddressField(Field)
</span>-<span style="color: #000000"> 字符串类型,Django Admin以及ModelForm中提供验证 IPV4 机制
GenericIPAddressField(Field)
</span>-<span style="color: #000000"> 字符串类型,Django Admin以及ModelForm中提供验证 Ipv4和Ipv6
</span>-<span style="color: #000000"> 参数:
protocol,用于指定Ipv4或Ipv6, </span><span style="color: #800000">'</span><span style="color: #800000">both</span><span style="color: #800000">'</span>,<span style="color: #800000">"</span><span style="color: #800000">ipv4</span><span style="color: #800000">"</span>,<span style="color: #800000">"</span><span style="color: #800000">ipv6</span><span style="color: #800000">"</span><span style="color: #000000">
unpack_ipv4, 如果指定为True,则输入::ffff:</span>192.0.2.1时候,可解析为192.0.2.1,开启此功能,需要protocol=<span style="color: #800000">"</span><span style="color: #800000">both</span><span style="color: #800000">"</span><span style="color: #000000">
URLField(CharField)
</span>-<span style="color: #000000"> 字符串类型,Django Admin以及ModelForm中提供验证 URL
SlugField(CharField)
</span>-<span style="color: #000000"> 字符串类型,Django Admin以及ModelForm中提供验证支持 字母、数字、下划线、连接符(减号)
CommaSeparatedIntegerField(CharField)
</span>-<span style="color: #000000"> 字符串类型,格式必须为逗号分割的数字
UUIDField(Field)
</span>-<span style="color: #000000"> 字符串类型,Django Admin以及ModelForm中提供对UUID格式的验证
FilePathField(Field)
</span>-<span style="color: #000000"> 字符串,Django Admin以及ModelForm中提供读取文件夹下文件的功能
</span>-<span style="color: #000000"> 参数:
path,文件夹路径
match</span>=<span style="color: #000000">None,正则匹配
recursive</span>=<span style="color: #000000">False,递归下面的文件夹
allow_files</span>=<span style="color: #000000">True,允许文件
allow_folders</span>=<span style="color: #000000">False,允许文件夹
FileField(Field)
</span>-<span style="color: #000000"> 字符串,路径保存在数据库,文件上传到指定目录
</span>-<span style="color: #000000"> 参数:
upload_to </span>= <span style="color: #800000">""</span><span style="color: #000000"> 上传文件的保存路径
storage </span>=<span style="color: #000000"> None 存储组件,默认django.core.files.storage.FileSystemStorage
ImageField(FileField)
</span>-<span style="color: #000000"> 字符串,路径保存在数据库,文件上传到指定目录
</span>-<span style="color: #000000"> 参数:
upload_to </span>= <span style="color: #800000">""</span><span style="color: #000000"> 上传文件的保存路径
storage </span>=<span style="color: #000000"> None 存储组件,默认django.core.files.storage.FileSystemStorage
width_field</span>=<span style="color: #000000">None,上传图片的高度保存的数据库字段名(字符串)
height_field</span>=<span style="color: #000000">None 上传图片的宽度保存的数据库字段名(字符串)
DateTimeField(DateField)
</span>- 日期+时间格式 YYYY-MM-<span style="color: #000000">DD HH:MM[:ss[.uuuuuu]][TZ]
DateField(DateTimeCheckMixin,Field)
</span>- 日期格式 YYYY-MM-<span style="color: #000000">DD
TimeField(DateTimeCheckMixin,Field)
</span>-<span style="color: #000000"> 时间格式 HH:MM[:ss[.uuuuuu]]
DurationField(Field)
</span>-<span style="color: #000000"> 长整数,时间间隔,数据库中按照bigint存储,ORM中获取的值为datetime.timedelta类型
FloatField(Field)
</span>-<span style="color: #000000"> 浮点型
DecimalField(Field)
</span>-<span style="color: #000000"> 10进制小数
</span>-<span style="color: #000000"> 参数:
max_digits,小数总长度
decimal_places,小数位长度
BinaryField(Field)
</span>-<span style="color: #000000"> 二进制类型
字段相关内容 1,常用字段 1)AutoField int自增列,必须填入参数 primary_key=True。当model中如果没有自增列,则自动会创建一个列名为id的列。 2)IntegerField 一个整数类型,范围在 -2147483648 to 2147483647 3)CharField 字符类型,必须提供max_length参数, max_length表示字符长度。 4)DateField 日期字段,日期格式? YYYY-MM-DD,相当于Python中的datetime.date()实例 5)DateTimeField 日期时间字段,格式 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ],相当于Python中的datetime.datetime()实例。 五,自定义字段
(self,max_length,*args,**=(max_length=max_length,**
</span><span style="color: #0000ff">def</span><span style="color: #000000"> db_type(self,connection):
</span><span style="color: #800000">"""</span><span style="color: #800000">
限定生成数据库表的字段类型为char,长度为max_length指定的值
</span><span style="color: #800000">"""</span>
<span style="color: #0000ff">return</span> <span style="color: #800000">'</span><span style="color: #800000">char(%s)</span><span style="color: #800000">'</span> %<span style="color: #000000"> self.max_length
<span style="color: #0000ff">class<span style="color: #000000"> Class(models.Model):id = models.AutoField(primary_key=<span style="color: #000000">True) title = models.CharField(max_length=25<span style="color: #000000">) <span style="color: #008000">#<span style="color: #008000"> 使用自定义的char类型的字段 cname = FixedCharField(max_length=25) 六,注意事项 1
= models.AutoField(primary_key== models.CharField(max_length=32
email </span>= models.EmailField(error_messages={<span style="color: #800000">'</span><span style="color: #800000">invalid</span><span style="color: #800000">'</span>: <span style="color: #800000">'</span><span style="color: #800000">格式错了.</span><span style="color: #800000">'</span><span style="color: #000000">})
</span><span style="color: #008000">#</span><span style="color: #008000"> views.py</span>
<span style="color: #0000ff">def</span><span style="color: #000000"> index(request):
obj </span>= models.UserInfo(username=<span style="color: #800000">'</span><span style="color: #800000">11234</span><span style="color: #800000">'</span>,email=<span style="color: #800000">'</span><span style="color: #800000">uu</span><span style="color: #800000">'</span><span style="color: #000000">)
</span><span style="color: #0000ff">try</span><span style="color: #000000">:
</span><span style="color: #0000ff">print</span><span style="color: #000000">(obj.clean_fields())
</span><span style="color: #0000ff">except</span><span style="color: #000000"> Exception as e:
</span><span style="color: #0000ff">print</span><span style="color: #000000">(e)
</span><span style="color: #0000ff">return</span> HttpResponse(<span style="color: #800000">'</span><span style="color: #800000">ok</span><span style="color: #800000">'</span><span style="color: #000000">)
</span><span style="color: #008000">#</span><span style="color: #008000"> Model的clean方法是一个钩子,可用于定制操作,如:上述的异常处理。</span>
2<span style="color: #000000">.Admin中修改错误提示
</span><span style="color: #008000">#</span><span style="color: #008000"> admin.py</span>
<span style="color: #0000ff">from</span> django.contrib <span style="color: #0000ff">import</span><span style="color: #000000"> admin
</span><span style="color: #0000ff">from</span> model_club <span style="color: #0000ff">import</span><span style="color: #000000"> models
</span><span style="color: #0000ff">from</span> django <span style="color: #0000ff">import</span><span style="color: #000000"> forms
</span><span style="color: #0000ff">class</span><span style="color: #000000"> UserInfoForm(forms.ModelForm):
age </span>= forms.IntegerField(initial=1,error_messages={<span style="color: #800000">'</span><span style="color: #800000">required</span><span style="color: #800000">'</span>: <span style="color: #800000">'</span><span style="color: #800000">请输入数值.</span><span style="color: #800000">'</span>,<span style="color: #800000">'</span><span style="color: #800000">invalid</span><span style="color: #800000">'</span>: <span style="color: #800000">'</span><span style="color: #800000">年龄必须为数值.</span><span style="color: #800000">'</span><span style="color: #000000">})
</span><span style="color: #0000ff">class</span><span style="color: #000000"> Meta:
model </span>=<span style="color: #000000"> models.UserInfo
</span><span style="color: #008000">#</span><span style="color: #008000"> fields = ('username',)</span>
fields = <span style="color: #800000">"</span><span style="color: #800000">__all__</span><span style="color: #800000">"</span><span style="color: #000000">
exclude </span>= [<span style="color: #800000">'</span><span style="color: #800000">title</span><span style="color: #800000">'</span><span style="color: #000000">]
labels </span>= { <span style="color: #800000">'</span><span style="color: #800000">name</span><span style="color: #800000">'</span>:<span style="color: #800000">'</span><span style="color: #800000">Writer</span><span style="color: #800000">'</span><span style="color: #000000">,}
help_texts </span>= {<span style="color: #800000">'</span><span style="color: #800000">name</span><span style="color: #800000">'</span>:<span style="color: #800000">'</span><span style="color: #800000">some useful help text.</span><span style="color: #800000">'</span><span style="color: #000000">,}
error_messages</span>={ <span style="color: #800000">'</span><span style="color: #800000">name</span><span style="color: #800000">'</span>:{<span style="color: #800000">'</span><span style="color: #800000">max_length</span><span style="color: #800000">'</span>:<span style="color: #800000">"</span><span style="color: #800000">this writer name is too long</span><span style="color: #800000">"</span><span style="color: #000000">} }
widgets</span>={<span style="color: #800000">'</span><span style="color: #800000">name</span><span style="color: #800000">'</span>:Textarea(attrs={<span style="color: #800000">'</span><span style="color: #800000">cols</span><span style="color: #800000">'</span>:80,<span style="color: #800000">'</span><span style="color: #800000">rows</span><span style="color: #800000">'</span>:20<span style="color: #000000">})}
</span><span style="color: #0000ff">class</span><span style="color: #000000"> UserInfoAdmin(admin.ModelAdmin):
form </span>=<span style="color: #000000"> UserInfoForm
admin.site.register(models.UserInfo,UserInfoAdmin)
注意事项 七,字段参数 verbose_name Admin中显示的字段名称
blank Admin中是否允许用户输入为空
editable Admin中是否可以编辑
help_text Admin中该字段的提示信息
choices Admin中显示选择框的内容,用不变动的数据放在内存中从而避免跨表操作
如:gf </span>= models.IntegerField(choices=[(0,<span style="color: #800000">'</span><span style="color: #800000">何穗</span><span style="color: #800000">'</span>),(1,<span style="color: #800000">'</span><span style="color: #800000">大表姐</span><span style="color: #800000">'</span>),],default=1<span style="color: #000000">)
error_messages 自定义错误信息(字典类型),从而定制想要显示的错误信息;
字典健:null,blank,invalid,invalid_choice,unique,</span><span style="color: #0000ff">and</span><span style="color: #000000"> unique_for_date
如:{</span><span style="color: #800000">'</span><span style="color: #800000">null</span><span style="color: #800000">'</span>: <span style="color: #800000">"</span><span style="color: #800000">不能为空.</span><span style="color: #800000">"</span>,<span style="color: #800000">'</span><span style="color: #800000">invalid</span><span style="color: #800000">'</span>: <span style="color: #800000">'</span><span style="color: #800000">格式错误</span><span style="color: #800000">'</span><span style="color: #000000">}
validators 自定义错误验证(列表类型),从而定制想要的验证规则
</span><span style="color: #0000ff">from</span> django.core.validators <span style="color: #0000ff">import</span><span style="color: #000000"> RegexValidator
</span><span style="color: #0000ff">from</span> django.core.validators <span style="color: #0000ff">import</span><span style="color: #000000"> EmailValidator,URLValidator,DecimalValidator,
MaxLengthValidator,MinLengthValidator,MaxValueValidator,MinValueValidator
如:
test </span>=<span style="color: #000000"> models.CharField(
max_length</span>=32<span style="color: #000000">,error_messages</span>=<span style="color: #000000">{
</span><span style="color: #800000">'</span><span style="color: #800000">c1</span><span style="color: #800000">'</span>: <span style="color: #800000">'</span><span style="color: #800000">优先错信息1</span><span style="color: #800000">'</span><span style="color: #000000">,</span><span style="color: #800000">'</span><span style="color: #800000">c2</span><span style="color: #800000">'</span>: <span style="color: #800000">'</span><span style="color: #800000">优先错信息2</span><span style="color: #800000">'</span><span style="color: #000000">,</span><span style="color: #800000">'</span><span style="color: #800000">c3</span><span style="color: #800000">'</span>: <span style="color: #800000">'</span><span style="color: #800000">优先错信息3</span><span style="color: #800000">'</span><span style="color: #000000">,},validators</span>=<span style="color: #000000">[
RegexValidator(regex</span>=<span style="color: #800000">'</span><span style="color: #800000">root_d+</span><span style="color: #800000">'</span>,message=<span style="color: #800000">'</span><span style="color: #800000">错误了</span><span style="color: #800000">'</span>,code=<span style="color: #800000">'</span><span style="color: #800000">c1</span><span style="color: #800000">'</span><span style="color: #000000">),RegexValidator(regex</span>=<span style="color: #800000">'</span><span style="color: #800000">root_112233d+</span><span style="color: #800000">'</span>,message=<span style="color: #800000">'</span><span style="color: #800000">又错误了</span><span style="color: #800000">'</span>,code=<span style="color: #800000">'</span><span style="color: #800000">c2</span><span style="color: #800000">'</span><span style="color: #000000">),EmailValidator(message</span>=<span style="color: #800000">'</span><span style="color: #800000">又错误了</span><span style="color: #800000">'</span>,code=<span style="color: #800000">'</span><span style="color: #800000">c3</span><span style="color: #800000">'</span><span style="color: #000000">),]
)
字段参数 八,元信息 = models.AutoField(primary_key== models.CharField(max_length=32
db_table =
<span style="color: #000000"> verbose_name
<span style="color: #000000"> verbose_name_plural 元信息 九,多表关系和参数 ForeignKey(ForeignObject)
to,
to_field=None,
on_delete=None,
------
</span><span style="color: #0000ff">def</span><span style="color: #000000"> func():
</span><span style="color: #0000ff">return</span> 10
<span style="color: #0000ff">class</span><span style="color: #000000"> MyModel(models.Model):
user </span>=<span style="color: #000000"> models.ForeignKey(
to</span>=<span style="color: #800000">"</span><span style="color: #800000">User</span><span style="color: #800000">"</span><span style="color: #000000">,to_field</span>=<span style="color: #800000">"</span><span style="color: #800000">id</span><span style="color: #800000">"</span><span style="color: #000000">
on_delete</span>=<span style="color: #000000">models.SET(func),)
related_name</span>=None,<span style="color: #008000">#</span><span style="color: #008000"> 反向操作时,使用的字段名,用于代替 【表名_set】 如: obj.表名_set.all()</span>
related_query_name=None,<span style="color: #008000">#</span><span style="color: #008000"> 反向操作时,使用的连接前缀,用于替换【表名】 如: models.UserGroup.objects.filter(表名__字段名=1).values('表名__字段名')</span>
limit_choices_to=None,<span style="color: #008000">#</span><span style="color: #008000"> 在Admin或ModelForm中显示关联数据时,提供的条件:</span>
<span style="color: #008000">#</span><span style="color: #008000"> 如:</span>
- limit_choices_to={<span style="color: #800000">'</span><span style="color: #800000">nid__gt</span><span style="color: #800000">'</span>: 5<span style="color: #000000">}
</span>- limit_choices_to=<span style="color: #0000ff">lambda</span> : {<span style="color: #800000">'</span><span style="color: #800000">nid__gt</span><span style="color: #800000">'</span>: 5<span style="color: #000000">}
</span><span style="color: #0000ff">from</span> django.db.models <span style="color: #0000ff">import</span><span style="color: #000000"> Q
</span>- limit_choices_to=Q(nid__gt=10<span style="color: #000000">)
</span>- limit_choices_to=Q(nid=8) | Q(nid__gt=10<span style="color: #000000">)
</span>- limit_choices_to=<span style="color: #0000ff">lambda</span> : Q(Q(nid=8) | Q(nid__gt=10)) & Q(caption=<span style="color: #800000">'</span><span style="color: #800000">root</span><span style="color: #800000">'</span><span style="color: #000000">)
db_constraint</span>=True <span style="color: #008000">#</span><span style="color: #008000"> 是否在数据库中创建外键约束</span>
parent_link=False <span style="color: #008000">#</span><span style="color: #008000"> 在Admin中是否显示关联数据</span>
<span style="color: #000000">
<span style="color: #000000"> models.BB.objects.filter(...)
<span style="color: #000000"> 十,ORM操作
models.Tb1.objects.create(c1=,c2=)
obj = models.Tb1(c1=,c2=<span style="color: #008000">#<span style="color: #008000"> 查
models.Tb1.objects.get(id=123) <span style="color: #008000">#<span style="color: #008000"> 获取单条数据,不存在则报错(不建议) models.Tb1.objects.all() <span style="color: #008000">#<span style="color: #008000"> 获取全部 models.Tb1.objects.filter(name=<span style="color: #800000">'<span style="color: #800000">seven<span style="color: #800000">') <span style="color: #008000">#<span style="color: #008000"> 获取指定条件的数据 models.Tb1.objects.exclude(name=<span style="color: #800000">'<span style="color: #800000">seven<span style="color: #800000">') <span style="color: #008000">#<span style="color: #008000"> 去除指定条件的数据 <span style="color: #008000">#<span style="color: #008000"> 删<span style="color: #008000"> <span style="color: #008000"> models.Tb1.objects.filter(name='seven').delete() # 删除指定条件的数据<span style="color: #008000">#<span style="color: #008000"> 改
<span style="color: #008000">#<span style="color: #008000"> models.Tb1.objects.filter(idgt=1) # 获取id大于1的值<span style="color: #008000">#<span style="color: #008000"> models.Tb1.objects.filter(idgte=1) # 获取id大于等于1的值 <span style="color: #008000">#<span style="color: #008000"> models.Tb1.objects.filter(idlt=10) # 获取id小于10的值 <span style="color: #008000">#<span style="color: #008000"> models.Tb1.objects.filter(idlte=10) # 获取id小于10的值 <span style="color: #008000">#<span style="color: #008000"> models.Tb1.objects.filter(idlt=10,idgt=1) # 获取id大于1 且 小于10的值
<span style="color: #008000">#<span style="color: #008000"> models.Tb1.objects.filter(idin=[11,22,33]) # 获取id等于11、22、33的数据
<span style="color: #008000">#<span style="color: #008000"> models.Tb1.objects.filter(namecontains="ven")
<span style="color: #008000">#<span style="color: #008000"> models.Tb1.objects.filter(id__range=[1,2]) # 范围bettwen and
<span style="color: #008000">#<span style="color: #008000"> startswith,istartswith,endswith,iendswith,
<span style="color: #008000">#<span style="color: #008000"> models.Tb1.objects.filter(name='seven').order_by('id') # asc
<span style="color: #008000">#<span style="color: #008000"> from django.db.models import Count,Min,Max,Sum
<span style="color: #008000">#<span style="color: #008000"> models.Tb1.objects.all()[10:20]
<span style="color: #008000">#<span style="color: #008000"> Entry.objects.get(titleregex=r'^(An?|The) +')
<span style="color: #008000">#<span style="color: #008000"> Entry.objects.filter(pub_date__date=datetime.date(2005,1,1))
<span style="color: #008000">#<span style="color: #008000"> Entry.objects.filter(pub_date__year=2005)
<span style="color: #008000">#<span style="color: #008000"> Entry.objects.filter(pub_date__month=12)
<span style="color: #008000">#<span style="color: #008000"> Entry.objects.filter(pub_date__day=3)
<span style="color: #008000">#<span style="color: #008000"> Entry.objects.filter(pub_dateweek_day=2)
<span style="color: #008000">#<span style="color: #008000"> Event.objects.filter(timestamphour=23)
<span style="color: #008000">#<span style="color: #008000"> Event.objects.filter(timestampminute=29)
<span style="color: #008000">#<span style="color: #008000"> Event.objects.filter(timestampsecond=31) <span style="color: #008000"># <span style="color: #008000"> select和select_params是一组,where和params是一组,tables用来设置from哪个表<span style="color: #008000"> <span style="color: #008000"> Entry.objects.extra(select={'new_id': "select col from sometable where othercol > %s"},select_params=(1,))<span style="color: #008000"> <span style="color: #008000"> Entry.objects.extra(where=['headline=%s'],params=['Lennon'])<span style="color: #008000"><span style="color: #008000"> Entry.objects.extra(where=["foo='a' OR bar = 'a'","baz = 'a'"])<span style="color: #008000"><span style="color: #008000"> Entry.objects.extra(select={'new_id': "select id from tb where id > %s"},),order_by=['-nid'])<span style="color: #000000"> <span style="color: #008000">#<span style="color: #008000"> 执行原生SQL<span style="color: #008000"> <span style="color: #008000"> 更高灵活度的方式执行原生SQL语句<span style="color: #008000"><span style="color: #008000"> from django.db import connection,connections<span style="color: #008000"><span style="color: #008000"> cursor = connection.cursor() # cursor = connections['default'].cursor()<span style="color: #008000"><span style="color: #008000"> cursor.execute("""SELECT * from auth_user where id = %s""",[1])<span style="color: #008000"><span style="color: #008000"> row = cursor.fetchone()<span style="color: #000000"> <span style="color: #0000ff">def <span style="color: #000000"> all(self)<span style="color: #008000">#<span style="color: #008000"> 获取所有的数据对象 <span style="color: #0000ff">def filter(self,**<span style="color: #000000">kwargs)<span style="color: #008000">#<span style="color: #008000"> 条件查询 <span style="color: #008000">#<span style="color: #008000"> 条件可以是:参数,字典,Q <span style="color: #0000ff">def exclude(self,**<span style="color: #000000">kwargs) <span style="color: #0000ff">def select_related(self,*<span style="color: #000000">fields)
<span style="color: #0000ff">def prefetch_related(self,*<span style="color: #000000">lookups)
<span style="color: #0000ff">def annotate(self,**<span style="color: #000000">kwargs)
<span style="color: #000000"> <span style="color: #0000ff">def distinct(self,*<span style="color: #000000">field_names) <span style="color: #0000ff">def order_by(self,*<span style="color: #000000">field_names) <span style="color: #0000ff">def extra(self,select_params=<span style="color: #000000">None) <span style="color: #0000ff">def<span style="color: #000000"> reverse(self): <span style="color: #0000ff">def defer(self,*<span style="color: #000000">fields): <span style="color: #0000ff">def only(self,*<span style="color: #000000">fields): <span style="color: #0000ff">def<span style="color: #000000"> using(self,alias): <span style="color: #008000">#<span style="color: #008000">#################################################<span style="color: #008000"> <span style="color: #008000"> PUBLIC METHODS THAT RETURN A QUERYSET SUBCLASS #<span style="color: #008000"><span style="color: #008000">#################################################<span style="color: #0000ff">def raw(self,raw_query,translations=None,using=<span style="color: #000000">None):
<span style="color: #0000ff">def values(self,*<span style="color: #000000">fields): <span style="color: #0000ff">def values_list(self,*fields,**<span style="color: #000000">kwargs): <span style="color: #0000ff">def dates(self,field_name,kind,order=<span style="color: #800000">'<span style="color: #800000">ASC<span style="color: #800000">'<span style="color: #000000">):
<span style="color: #0000ff">def datetimes(self,order=<span style="color: #800000">'<span style="color: #800000">ASC<span style="color: #800000">',tzinfo=<span style="color: #000000">None):
<span style="color: #0000ff">def<span style="color: #000000"> none(self): <span style="color: #008000">#<span style="color: #008000">###################################<span style="color: #008000"> <span style="color: #008000"> METHODS THAT DO DATABASE QUERIES #<span style="color: #008000"><span style="color: #008000">###################################<span style="color: #0000ff">def aggregate(self,**<span style="color: #000000">kwargs): <span style="color: #0000ff">def<span style="color: #000000"> count(self): <span style="color: #0000ff">def get(self,**<span style="color: #000000">kwargs): <span style="color: #0000ff">def create(self,**<span style="color: #000000">kwargs): <span style="color: #0000ff">def bulk_create(self,objs,batch_size=<span style="color: #000000">None): <span style="color: #0000ff">def get_or_create(self,defaults=None,**<span style="color: #000000">kwargs): <span style="color: #0000ff">def update_or_create(self,**<span style="color: #000000">kwargs): <span style="color: #0000ff">def<span style="color: #000000"> first(self): <span style="color: #0000ff">def<span style="color: #000000"> last(self): <span style="color: #0000ff">def in_bulk(self,id_list=<span style="color: #000000">None): <span style="color: #0000ff">def<span style="color: #000000"> delete(self): <span style="color: #0000ff">def update(self,**<span style="color: #000000">kwargs): <span style="color: #0000ff">def<span style="color: #000000"> exists(self): QuerySet方法大全 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |