zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    jqgrid自带多选与单选
    NPOI读写Excel【转载】
    C# 對 List<string> 取交集、補集、超集、串聯
    在前端解決顯示null值一例
    Linux netstat命令详解和使用例子(显示各种网络相关信息)
    Git 忽略規則及 .gitignore 規則不生效的辦法
    树莓派上传数据错误一例
    搭建本地SVN資料
    利用樹霉派採集溫濕度上傳到OneNET(非完整,僅參考)
    部署ASP.Net Core 2.1 項目到 IIS
  • 原文地址:https://www.cnblogs.com/mmyy-blog/p/9851786.html
Copyright © 2011-2022 走看看