This is part of the series Django For Beginners we are going to see about apps in app and we will see about models in django in this part.
In this post we are going to learn a lot queries in django. I recommend you to read last post so as it will be easy to understand context of this post , now let's get started.
These are the
models which we are going to use for most part in this post,
from django.db import models from django.utils import timezone from djnago.contrib.auth.models import User class Post(models.Model) title = models.CharField(max_length=250) created_at = models.DateTimeField(default=timezone.now) author = models.ForeignKey('Author', on_delete=models.CASCADE, related_name="author") likes = models.ManyToManyField(User, blank=True, related_name="likes") dislikes = models.ManyToManyField(User, blank=True, related_name="dislikes") likes_count = models.PositiveIntegerField(default=0) dislikes_count = models.PositiveIntegerField(default=0) rating = models.DecimalField(max_digits=4, decimal_places=2) class Author(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) liked_posts = models.ManyToManyField(Post, blank=True, related_name="liked_posts") disliked_posts = models.ManyToManyField(Post, blank=True, related_name="disliked_posts")
To get all data of the model we use this query, it is not used most often as it costs a lot of resources if data is large and it is always a good practice to limit the query results which we will see how to do after this,
all_posts = Post.objects.all()
To limit results of any query we add
[ start_count : end_count ] to get results from
end_count you can also use
[ : end_count ] to get results from
end_count. Let's see an example,
only_five_posts = Post.objects.all()[:4]
The above query will give
5 results only as index start from
0 and till
4 it would be five results.
There is situation many times when we want to retrieve only one result from the query with exact match of fields for such situations we use get query, let me show you an example,
one_post = Post.objects.get(id=1)
ModelName.objects.get( pass_keyword_arguments )
Sorry to interrupt you but I want to tell you one thing that I have started a small blog you may continue reading it here it will help me a lot.