0Pricing
Django Academy · Ders

Karmaşık Filtreler için Q Nesneleri

Koşulları AND, OR ve NOT ile birleştirin.

Karmaşık Filtreler için Q Nesneleri, CoddyKit'te ücretsiz bir Django Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Django Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Django Academy kursu toplamda 4 dersten oluşur.

Bu dersin bazı bölümleri henüz çevrilmemiş olup İngilizce olarak gösterilmektedir.

Beyond Simple filter()

Stacking keyword arguments in filter always means AND. To express OR or NOT, you need a richer tool.

Meet the Q Object

A Q object wraps a condition so you can combine conditions with boolean operators inside a single query.

from django.db.models import Q

OR with the Pipe

Combine two Q objects with the pipe operator to build an OR, matching rows that satisfy either condition.

Book.objects.filter(Q(title__icontains="django") | Q(title__icontains="flask"))

AND with the Ampersand

The ampersand joins Q objects with AND, useful when you want explicit grouping rather than plain keyword stacking.

Book.objects.filter(Q(price__lt=20) & Q(in_stock=True))

Negate with the Tilde

Put a tilde in front of a Q object to express NOT, matching every row that fails the condition.

Book.objects.filter(~Q(author__name="Anon"))

Mixing Q and Keywords

You may pass Q objects and plain keyword arguments together, but every positional Q must come before any keyword.

Book.objects.filter(Q(price__lt=20) | Q(on_sale=True), in_stock=True)

Grouping with Parentheses

Wrap combined Q objects in parentheses to control precedence, just like grouping conditions in raw SQL.

Book.objects.filter((Q(a=1) | Q(b=2)) & Q(c=3))

Build Filters Dynamically

Because Q objects are values, you can build them up conditionally in Python before passing the result to filter.

q = Q(active=True)
if term:
    q &= Q(name__icontains=term)
User.objects.filter(q)

Combine Many with reduce

Need an OR across a list of terms? Fold them together with operator.or_ to produce one combined Q.

from functools import reduce
import operator
reduce(operator.or_, [Q(tag=t) for t in tags])

Still One SQL Query

However complex the logic, Django compiles your Q tree into a single WHERE clause, so there is no extra round trip.

When to Use Q

Reach for Q whenever a filter needs OR, NOT, or logic assembled at runtime; plain keywords stay fine for simple ANDs.

Quick Check

You want books whose title contains django OR flask. Which filter expresses that?

Recap

Q objects unlock OR, AND, and NOT logic you can group and build dynamically, all compiled into one query. 🧩

Sıkça Sorulan Sorular

“Karmaşık Filtreler için Q Nesneleri” dersi ücretsiz mi?

Evet — “Karmaşık Filtreler için Q Nesneleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Django Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Django Academy kursu toplamda 4 dersten oluşur.

“Karmaşık Filtreler için Q Nesneleri” dersinde ne öğreneceğim?

Koşulları AND, OR ve NOT ile birleştirin. Django Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Django Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Django Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“Karmaşık Filtreler için Q Nesneleri” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Django Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Django Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. aggregate ve annotate
  2. Atomik Güncellemeler için F İfadeleri
  3. Karmaşık Filtreler için Q Nesneleri
  4. Case/When ile Koşullu Toplama
← Django Academy Sayfasına Dön