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;