django之 使用py文件操作django项目中的表

要想在一个另外的py文件中操作django,可以使用如下的代码

import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE",'mysite.settings')  #mysite用的是自己的project
import django
django.setup()

from app01 import models  #app01是项目名

基本操作

方法 解释
get() 获取指定条件的对象,在views.py里面有且只能有一个,否则报错
all() 获取所有对象
filter() 获取满足条件的所有对象 ---》对象列表
exclude() 获取所有不满足条件的对象,也就是get()的取反
values() 括号内有参数就是获取指定字段的结果,不写就是显示所有字段
values_list() 区别于values,是以元组的形式来表示
order_by() 以某个字段来排列,- 是以降序排列
reverse() 对排列好的结果取反
distinct() 去重 
models.Book.objects.all().values("price").distinct()
count() 计算结果的数量
first() 取出满足条件的第一个结果
last() 取出满足条件的最后一个结果
exists() 判断结果是否存在
 delete()  删除记录
models.Book.objects.filter(price__lte=100).delete()
 update()  修改记录
models.Book.objects.filter(title__startswith="py").update(price=120)

下面是举例:

首先我们设置打印格式:

class User(models.Model):
    id=models.AutoField(primary_key=True)
    name=models.CharField(max_length=32,db_column='user',verbose_name='姓名')
    age=models.IntegerField(verbose_name='年龄')
    birth=models.DateTimeField(auto_now=True,null=True)

    def __str__(self):
        return "<User:id-{}  name-{}>".format(self.id,self.name)

    class Meta:
        #数据库的表面修改,自定义
        db_table="user"

        #admin中显示的表名称
        verbose_name='个人信息'

        #在admin中Site administration显示
        verbose_name_plural='所有用户信息'

下面是一些双下滑线的操作命令:

__gt=     大于某个数

__lt= 小于某个数

__lte= 小于等于某个数

__in=[] 在某些数字中

__range=[1,3] 在一和三之间

__contain= 包含

__icontain= 包含忽略大小写

__year= 某个时间字段中的年

__startwith endswith 以什么开始,以什么结尾

举例

ret1=models.User.objects.filter(id__gt=1)
# <QuerySet [<User: <User:id-2  name-he>>, <User: <User:id-3  name-ren>>, <User: <User:id-4  name-wo>>]>
print(ret1)

#查询在某个区间的结果,可以放入不在数据库里面的id
ret2=models.User.objects.filter(id__in=[1,2,4,100])
print(ret2)

#查询在某个范围的结果
ret3=models.User.objects.filter(id__range=[1,3])
print(ret3)

#包含
ret4=models.User.objects.filter(name__contains='e')
print(ret4)

#忽略大小写,在sqlite数据库里面和contains是一样的,可以使用mysql验证
ret5=models.User.objects.filter(name__icontains='e')
print(ret5)

#查询字段birth的时间中year是2018
ret6=models.User.objects.filter(birth__year='2018')
print(ret6)
原文地址:https://www.cnblogs.com/mmyy-blog/p/9851786.html