Dica 52 - DRF: django-filter
Github: https://github.com/rg3915/drf-example
Doc: https://www.django-rest-framework.org/api-guide/filtering/#djangofilterbackend
Doc: https://django-filter.readthedocs.io/en/stable/guide/rest_framework.html#integration-with-drf
Filtrando a queryset
Editar blog/models.py
# blog/models.py
from django.contrib.auth.models import User
from django.db import models
class Author(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30, null=True)
class Meta:
verbose_name_plural = "Authors"
@property
def full_name(self):
return f'{self.first_name} {self.last_name or ""}'.strip()
def __str__(self):
return self.full_name
class Post(models.Model):
title = models.CharField(max_length=30)
body = models.TextField()
author = models.ForeignKey(Author, on_delete=models.CASCADE, null=True)
created_by = models.ForeignKey(
User,
on_delete=models.CASCADE,
verbose_name='criado por',
null=True
)
created = models.DateTimeField(auto_now_add=True)
class Meta:
verbose_name_plural = "Posts"
def __str__(self):
return self.titleEditar blog/admin.py
Editar blog/views.py
Filtrando pelo usuário logado
Editar blog/views.py
Erro:
Editar blog/urls.py
Filtrando a partir de query parameters
Editar settings.py
Editar blog/views.py
Filtro Genérico django-filter
https://django-filter.readthedocs.io/en/stable/guide/rest_framework.html#integration-with-drf
Editar settings.py
Editar blog/views.py
Filtra pelo texto completo.
Adicionando filtro específico com filterset_class
Editar blog/filters.py
Editar blog/views.py
Campo de busca
Editar blog/views.py
Last updated
Was this helpful?