Python——Django中model的queryset


  • 今天学习的是在model中使用一些关于queryset的属性。
  • 以一段代码为例:
class Person(models.Model):
    p_name = models.CharField(max_length=18, unique=True)
    p_age = models.IntegerField(default=18, db_column='age')
    # False表示男,True表示女
    p_sex = models.BooleanField(default=False, db_column='sex')
    p_hobby = models.CharField(max_length=32, null=True, blank=True)

    @classmethod
    def create(cls, p_name, p_age=18, p_sex=False, p_hobby='Swimming'):
        return cls(p_name=p_name, p_age=p_age, p_sex=p_sex, p_hobby=p_hobby)

    class Meta:
        db_table = 'Person'
  • 以上代码中包含了这样一些知识点:
    • 1.models中存在CharField、IntegerField、BooleanField、DateField这些基本的类别,分别对应了
      数据库中的字符串、数据、布尔值等等基本的类型。
    • 2.在之后的括号中,max_length表示的是字段最长长度,unique表示是否可重复,default表示默认值,
      db_column表示该列的名字,null表示是否为空。
    • 3.db_table则是规定了这一表的表名。
    • 4.在代码中规定的create函数,可以认为是这个类的一个构造函数,可以自定义的构造不同的数据。
  • 之后学习的是关于queryset中对于数据筛选的函数。主要在views.py中实现。
def query_persons(request):
    persons = Person.objects.filter(p_age__gte=7)

    context = {
        "persons": persons
    }

    return render(request, 'db_list.html', context=context)
  • filter和exclude均为常见的条件筛选器。可以不间断的链式调用。
    filter返回的是符合条件的数据集,exclude返回的是不符合条件的数据集。
  • 筛选的条件内容主要通过"属性名__操作=value"的形式进行。以下为常见的操作:
    • __exact 精确等于 like ‘aaa’
    • __iexact 精确等于 忽略大小写 ilike ‘aaa’
    • __contains 包含 like ‘%aaa%’
    • __icontains 包含 忽略大小写 ilike ‘%aaa%’,但是对于sqlite来说,contains的作用效果等同于icontains。
    • __gt 大于
    • __gte 大于等于
    • __lt 小于
    • __lte 小于等于
    • __in 存在于一个list范围内
    • __startswith 以…开头
    • __istartswith 以…开头 忽略大小写
    • __endswith 以…结尾
    • __iendswith 以…结尾,忽略大小写
    • __range 在…范围内
    • __year 日期字段的年份
    • __month 日期字段的月份
    • __day 日期字段的日
    • __isnull=True/False
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值