美文网首页
django-models操作

django-models操作

作者: 老夫刘某 | 来源:发表于2017-10-10 11:59 被阅读0次
>>> w=test.objects.all()
>>> print(w)
<QuerySet [<test: test object>, <test: test object>, <test: test object>, <test: test object>, <test: test object>]>
>>> type(w)
<class 'django.db.models.query.QuerySet'>

可以看出来,获取到的是一个列表,属于queryset类型,下来获得username列的值,每一项的值为一个字典:

>>> w=test.objects.all().values('username')
>>> print(w)
<QuerySet [{'username': 'liujiangbu'}, {'username': 'liujianggg'}, {'username': 'liujianggg'}, {'username': 'liuji99angbu'}, {'username': 'liuji99angbu'}]>

.values_list(),获取到的值为一个元组:

>>> w=test.objects.all().values_list('username')
>>> print(w)
<QuerySet [('liujiangbu',), ('liujianggg',), ('liujianggg',), ('liuji99angbu',), ('liuji99angbu',)]>

也可以传入多个参数:

>>> w=test.objects.all().values_list('username','depno')
>>> print(w),type(w)
<QuerySet [('liujiangbu', '44444444444433333'), ('liujianggg', 'ttttttt'), ('liujianggg', 'ttttttt'), ('liuji99angbu', 'eddddeeeeee'), ('liuji99angbu', 'edddd
eeeeee')]>
(None, <class 'django.db.models.query.QuerySet'>)

利用上下划线进行查找:

# 获取个数
    #
    # models.Tb1.objects.filter(name='seven').count()

    # 大于,小于
    #
    # models.Tb1.objects.filter(id__gt=1)              # 获取id大于1的值
    # models.Tb1.objects.filter(id__lt=10)             # 获取id小于10的值
    # models.Tb1.objects.filter(id__lt=10, id__gt=1)   # 获取id大于1 且 小于10的值

    # in
    #
    # models.Tb1.objects.filter(id__in=[11, 22, 33])   # 获取id等于11、22、33的数据
    # models.Tb1.objects.exclude(id__in=[11, 22, 33])  # not in

    # contains
    #
    # models.Tb1.objects.filter(name__contains="ven")
    # models.Tb1.objects.filter(name__icontains="ven") # icontains大小写不敏感
    # models.Tb1.objects.exclude(name__icontains="ven")

    # range
    #
    # models.Tb1.objects.filter(id__range=[1, 2])   # 范围bettwen and

    # 其他类似
    #
    # startswith,istartswith, endswith, iendswith,

    # order by
    #
    # models.Tb1.objects.filter(name='seven').order_by('id')    # asc 从小到大
    # models.Tb1.objects.filter(name='seven').order_by('-id')   # desc 从大到小

    # limit 、offset
    #
    # models.Tb1.objects.all()[10:20]

    # group by
    from django.db.models import Count, Min, Max, Sum
    # models.Tb1.objects.filter(c1=1).values('id').annotate(c=Count('num'))
    # SELECT "app01_tb1"."id", COUNT("app01_tb1"."num") AS "c" FROM "app01_tb1" WHERE "app01_tb1"."c1" = 1 GROUP BY "app01_tb1"."id"

相关文章

网友评论

      本文标题:django-models操作

      本文链接:https://www.haomeiwen.com/subject/bqjvyxtx.html