Cheatsheet for Django QuerySets
Current Django Version: 2.2
QuerySets
Methods that return newCan be chained:
Entry.objects.filter(**kwargs).exclude(**kwargs).order_by(**kwargs)
- filter
- exclude
- annotate
- order_by
- reverse
- distinct
- values
- values_list
- dates
- datetimes
- none
- all
- union
- intersection
- difference
- select_related
- prefetch_related
- extra
- defer
- only
- using
- select_for_update
- raw
Methods that do not return QuerySets
- get
- create
- get_or_create
- update_or_create
- bulk_create
- bulk_update (new in 2.2)
- count
- in_bulk
- iterator
- latest
- earliest
- first
- last
- aggregate
- exists
- update
- delete
- as_manager
- explain (new in 2.1)
Field lookups
Field lookups are how you specify the meat of an SQL WHERE clause. They’re specified as keyword arguments to the QuerySet methods filter(), exclude() and get().
Example: Entry.objects.get(id__exact=14) # note double underscore.
- exact
- iexact
- contains
- icontains
- in
- gt
- gte
- lt
- lte
- startswith
- istartswith
- endswith
- iendswith
- range
- date
- year
- iso_year (new in 2.2)
- month
- day
- week
- week_day
- quarter
- time
- hour
- minute
- second
- isnull
- regex
- iregex
Protip: Use in to avoid chaining filter() and exclude()
Entry.objects.filter(status__in=['Hung over', 'Sober', 'Drunk'])