Django ORM 操作
DjangoORM字段参数介绍
字段的参数:
null: ->db是否可以为空
default: ->默认值
primary_key: ->主键
db_column ->列名
db_index ->索引
unique ->唯一索引
unique_for_date ->只对时间做索引
unique_for_month
unique_for_year
auto_now ->创建时,自动生成
auto_now_add ->更新时,自动更新为当前时间
#不支持这种更新,时间是更新不上来的。
obj=UserGroup.objects.filter(id=1).update(caption='CEO')
#支持下列这种更新
obj=UserGroup.objects.filter(id=1).first()
obj.caption="CEO"
obj.save()
choices ->作用:1.在Django admin中显示下拉框;2,避免连表查询。
blank ->在Django admin中是否可以为空
verbose_name ->在Django admin中显示字段中文。
editable ->在Django admin中是否可以被编辑。
error_messages ->在Django admin中显示的错误信息
helt_text ->在Django admin中显示提示信息
validators ->在Django form,自定义错误信息。
python manage.py makemigrations #根据app下的migrations目录中的记录,检测当前model层代码是否发生变化? python manage.py migrate #把orm代码转换成sql语句去数据库执行
python manage.py migrate --fake #只记录变化,不提交数据库操作
python manage.py inspectdb > models.py #检查DB中已经创建完毕的表结构,生成model.py
新增用户
admin = SMS.models.admin() admin.id = publics.views.createid(5) admin.username = "joy" admin.truename = "总管理员" admin.sex = "男" admin.pwd = publics.views.MD5Enctypt("123456") admin.typ="0" admin.status="Y" admin.rootorg="0" admin.save()
<
1
>
all
(): 查询所有结果
<
2
>
filter
(
*
*
kwargs): 它包含了与所给筛选条件相匹配的对象
models.Customer.objects.
filter
(
id
=
1
) >>> <QuerySet [<Customer: Costomer1>]> 不存在返回一个空的queryset,不会报错
models.Customer.objects.
filter
(
*
*
{
"id"
:
1
,..}) 参数也可传字典形式
-
-
-
也可传Q对象,后面Q对象介绍有
<
3
> get(
*
*
kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误。
models.Customer.objects.get(
id
=
1
) >>> <Customer: Costomer1>
<
4
> exclude(
*
*
kwargs): 它包含了与所给筛选条件不匹配的对象
models.Customer.objects.exclude(
id
=
1
)
<
5
> values(
*
field): 返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列model的实例化对象,而是一个可迭代的字典序列
models.Customer.objects.values(
"name"
,
"telephone_number"
)
>>> <QuerySet [{
'name'
:
'Costomer1'
,
'telephone_number'
:
'18200395978'
}, {
'name'
:
'Costomer2'
,
'telephone_number'
:
'18369852522'
}]>
<
6
> values_list(
*
field): 它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列
models.Customer.objects.values_list(
"name"
,
"telephone_number"
)
>>> <QuerySet [(
'Costomer1'
,
'18200395978'
), (
'Costomer2'
,
'18369852522'
)]>
<
7
> order_by(
*
field): 对查询结果排序
models.Customer.objects.
all
().order_by(
"id"
)
>>> <QuerySet [<Customer: Costomer1>, <Customer: Costomer2>, <Customer: Costomer3>
<
8
> reverse(): 对查询结果反向排序,请注意reverse()通常只能在具有已定义顺序的QuerySet上调用(在model类的Meta中指定ordering或调用order_by()方法)。
models.Customer.objects.
all
().order_by(
"id"
).reverse()
>>> <QuerySet [<Customer: Costomer17>, <Customer: Costomer16>, <Customer: Costomer15>
<
9
> distinct(): 从返回结果中剔除重复纪录(如果你查询跨越多个表,可能在计算QuerySet时得到重复的结果。此时可以使用distinct(),注意只有在PostgreSQL中支持按字段去重。)
<
10
> count(): 返回数据库中匹配查询(QuerySet)的对象数量。
<
11
> first(): 返回第一条记录
<
12
> last(): 返回最后一条记录
<
13
> exists():如果QuerySet包含数据,就返回
True
,否则返回
False