Lazy queryset
Tạo 1 QuerySet không đồng nghĩa với việc truy vấn CSDL
query = Entry.objects.filter(name="a")
query = query.exclude(id=1)
print(query)
Câu query trên chỉ thực hiện truy vấn 1 lần
Khi nào query được thực thi
Vòng lặp
Slicing
repr()
len()
list
bool( Nếu bạn chỉ muốn check 1 QuerySet có tồn tại hay không, sẽ cho tốc độ truy vấn nhanh và hiệu quả hơn nếu bạn dùng exists() )
prefetch_related và select_related
students = Student.objects.all()
for student in students:
print(student.class.name)
Đoạn code trên thực hiện N + 1 câu query Nên sử dụng như sau:
students = Student.objects.all().select_related('class')
for student in students:
print(student.class.name)
bulk_create và bulk_update
Entry.objects.bulk_create([
Entry(headline='This is a test'),
Entry(headline='This is only a test'),
])
entries[0].headline = 'This is not a test'
entries[1].headline = 'This is no longer a test'
Entry.objects.bulk_update(entries, ['headline'])
Use foreign key values directly
Last updated