F對象
- 可以獲取到自己的屬性值
- 實現自己的屬性自己的屬性關聯的復雜條件
- 支持運算
Q對象
- Q對象實際上是對條件的一個封裝
- 封裝后支持邏輯運算
- 與或非
- &
- |
- ~
- 支持嵌套
例子
from django.db.models import Max, Avg, F, Q
from django.http import HttpResponse
from django.shortcuts import renderfrom App.models import Jor, Grade, Newsdef 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 兩個3jor_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())```