django q objects

# Import necessary modules
from django.db.models import Q

# Create a Q object for a simple query
q_object = Q(username='john')

# Use logical operators to combine multiple Q objects
q_object_and = Q(username='john') & Q(email='[email protected]')
q_object_or = Q(username='john') | Q(email='[email protected]')

# Use the ~ operator to negate a Q object
q_object_not = ~Q(username='john')

# Use the Q object in a queryset filter
result_queryset = YourModel.objects.filter(q_object)

# Chaining Q objects with filter to create complex queries
result_queryset_complex = YourModel.objects.filter(q_object_and).filter(q_object_not)

# Combining Q objects directly in a filter
result_queryset_combined = YourModel.objects.filter(Q(username='john') & ~Q(email='[email protected]'))