Django의 ORM 일반 질의 작업 요약
5263 단어 Django
class Student(models.Model):
name=models.CharField(max_length=10)
sex = models.IntegerField(choices=((1," "),(2," ")),default=1)
birth = models.DateField(null=True)
school=models.CharField(max_length=10,null=True)
age = models.SmallIntegerField(default=0)
note=models.CharField(max_length=200,null=True)#
크거나 크거나 같음:
__gt >
__gte >=
Student.objects.filter(age__gt=10) // 10
Student.objects.filter(age__gte=10) // 10
: , 。
작음, 작음:
__lt <
__lte <=
Student.objects.filter(age__lt=10) // 10
Student.objects.filter(age__lte=10) // 10
like:
__exact like 'aaa'
__iexact ilike 'aaa'
__contains like '%aaa%'
__icontains , ilike '%aaa%', sqlite ,contains icontains。
in:
__in
Student.objects.filter(age__in=[10, 20, 30])
is null/is not null:
__isnull
Student.objects.filter(name__isnull=True) //
Student.objects.filter(name__isnull=False) //
다음과 같지 않음/포함되지 않음:
Student.objects.filter().excute(age=10) // 10
Student.objects.filter().excute(age__in=[10, 20]) // [10, 20]
기타 일반적인 모호 조회:
__startswith …
__istartswith …
__endswith …
__iendswith … ,
__range …
__year
__month
__day
다중 테이블 연결 쿼리:
class A(models.Model):
name = models.CharField(u' ')
class B(models.Model):
aa = models.ForeignKey(A)
B.objects.filter(aa__name__contains='searchtitle')# B aa name searchtitle B 。
새 QuerySets의 API 반환
filter() 。
exclude()
annotate()
order_by()
reverse()
distinct()
values() QuerySet
values_list() values() , 。
dates()
datetimes()
none()
all()
union()
intersection()
difference()
select_related()
prefetch_related()
extra() SQL
defer()
only()
using()
select_for_update() , 。
raw() SQL
1.filter():
filter(**kwargs)
。
(**kwargs) 。 AND 。
Student.objects.filter(age__lt=10)# 10
2.exclude():
exclude(**kwargs)
QuerySet,
Student.objects.exclude(age__gt=20, name='lin')# 20 “lin”
3.annotate():
nnotate(args, *kwargs)
。
、 ( ) ( 、 )。
annotate() annotation, QuerySet 。
Annotation Annotation 。 。 。 。
, Blog , Blog Entry:
>>> from django.db.models import Count
>>> q = Blog.objects.annotate(Count('entry'))
# The name of the first blog
>>> q[0].name
'Blogasaurus'
# The number of entries on the first blog
>>> q[0].entry__count
42
4.order_by():
order_by(*fields)
, Meta ordering QuerySet
Student.objects.filter(school=" ").order_by('-age', 'name')
age , name 。"-age" 。 。 , "?", :
Student.objects.order_by('?')
5. reverse():
reverse()
QuerySet 。 reverse() 。
QuerySet , :
my_queryset.reverse()[:5]
Python 。 Django 。
6.distinct():
distinct(*fields)
。
,QuerySet 。 ,QuerySet , distinct() 。
7. values():
values(fields, *expressions)
queryset, 。
, 。 :
# Student
>>> Student.objects.filter(name__startswith='Lin')
]>
#
>>> Student.objects.filter(name__startswith='Lin').values()
*fields, values() 。 , / 。 , 。 :
>>> Student.objects.filter(name__startswith='Lin').values()
>>> Blog.objects.values('id', 'name')
8.values_list():
values_list(*fields, flat=False)
values() , 。 values_list() , 。 :
>>> Student.objects.values_list('id', 'name')
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django 라우팅 계층 URLconf 작용 및 원리 해석URL 구성(URLconf)은 Django가 지원하는 웹 사이트의 디렉토리와 같습니다.그것의 본질은 URL과 이 URL을 호출할 보기 함수 사이의 맵표입니다. 위의 예제에서는 URL의 값을 캡처하고 위치 매개 변수로...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.