# 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]'))