F对象

  • 可以获取到自己的属性值
  • 实现自己的属性自己的属性关联的复杂条件
  • 支持运算

Q对象

  • Q对象实际上是对条件的一个封装
  • 封装后支持逻辑运算
  • 与或非
  • &
  • |
  • ~
  • 支持嵌套

例子

from django.db.models import Max, Avg, F, Q
from django.http import HttpResponse
from django.shortcuts import render

from App.models import Jor, Grade, News


def get_jors(request):

    # jors = Jor.objects.filter(news__n_content__contains="NBA").distinct("j_name")

    # 想要实现去重
    jors = Jor.objects.filter(news__n_content__contains="NBA")
    # jors 四个对象  两个1  两个3
    jor_list = list()

    for jor in jors:

        # print(id(jor))

        if jor not in jor_list:
            jor_list.append(jor)
    return render(request, "JorList.html", context=locals())

def get_age(request):

    result = Jor.objects.aggregate(Avg("j_age"))

    print(result)

    return HttpResponse("获取最大年龄成功")


def get_grade(request):

    # grades = Grade.objects.filter(g_girl_num__gt=F("g_boy_num") + 25)






    # grades = Grade.objects.filter(g_girl_num__gt=1).filter(g_girl_num__lt=20)
    # grades = Grade.objects.filter(Q(g_girl_num__gt=1) & Q(g_girl_num__lt=20))

    # grades = Grade.objects.filter(g_girl_num__lt=1).filter(g_girl_num__gt=20)
    # grades = Grade.objects.exclude(g_girl_num__gte=1).exclude(g_girl_num__lte=20)

    grades = Grade.objects.filter(Q(g_girl_num__lt=1) | Q(g_girl_num__gt=20))

    return render(request, "GradeList.html", context=locals())

版权声明:如无特殊说明,文章均为本站原创,转载请注明出处

本文链接:http://wakemeupnow.cn/article/fq/