INSTALLED_APPS = [
...
'django_seed',
python manage.py seed blog --number=250
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=255)
class Meta:
verbose_name_plural = "Authors"
def __str__(self):
return self.name
class Post(models.Model):
body = models.TextField()
author = models.ForeignKey(Author, on_delete=models.CASCADE, null=True)
created = models.DateTimeField(auto_now_add=True)
class Meta:
verbose_name_plural = "Posts"
def __str__(self):
return self.body
from rest_framework.permissions import AllowAny
class AuthorViewSet(viewsets.ModelViewSet):
...
permission_classes = (AllowAny,)
class PostViewSet(viewsets.ModelViewSet):
...
permission_classes = (AllowAny,)
class AuthorSerializer(serializers.ModelSerializer):
...
class PostSerializer(serializers.ModelSerializer):
...
REST_FRAMEWORK = {
...
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',
'PAGE_SIZE': 5
}
REST_FRAMEWORK = {
...
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 5
}
rm -f core/{admin,models,tests,views}.py
rm -rf core/migrations
touch core/pagination.py
from rest_framework.pagination import PageNumberPagination
class StandardResultsSetPagination(PageNumberPagination):
page_size = 10
page_size_query_param = 'page_size'
max_page_size = 100
REST_FRAMEWORK = {
...
'DEFAULT_PAGINATION_CLASS': 'core.pagination.StandardResultsSetPagination',
'PAGE_SIZE': 5
}
Paginação personalizada para o blog
from rest_framework.pagination import PageNumberPagination
class CustomBlogResultsSetPagination(PageNumberPagination):
page_size = 7
page_size_query_param = 'page_size'
max_page_size = 70
from blog.pagination import CustomBlogResultsSetPagination
class PostViewSet(viewsets.ModelViewSet):
...
pagination_class = CustomBlogResultsSetPagination
REST_FRAMEWORK = {
...
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.CursorPagination',
'PAGE_SIZE': 5
}
Requer um campo com o nome created
no seu modelo.