In the previous topic, you saw how you can retrieve data from database model. Here you will see how you can retrieve data based on some conditions. For example, say you want to only retrieve entries whose first_name
is James
, then you can use the filter()
function in Django.
Person.objects.filter(first_name='James')
Adding .values()
at the last will return as a dictionary
.
Person.objects.filter(first_name='James').values()
The SQL query
for the above code will be as following :
SELECT * FROM Person WHERE first_name = 'James';
Similarly, multiple conditions can be given as well in the filter()
function.
Person.objects.filter(first_name='James', id=13).values()
The SQL query
for the above code will be as following :
SELECT * FROM Person WHERE first_name = 'James' AND id=13;
It checks wether all the conditions given are satisfied or not, and then only returns the records. Giving OR
conditions is not that straight forward. One of the ways to select records based on OR
conditions is to use multiple filter()
functions separate by |
(Pipe) symbol.
Person.objects.filter(first_name='James').values() | Person.objects.filter(id=1).values()
The SQL query
for the above code will be as following :
SELECT * FROM Person WHERE first_name = 'James' OR id=1;