Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from django_filters import rest_framework as filters
- from recipes.models import Recipe
- class RecipeFilter(filters.FilterSet):
- author = filters.AllValuesMultipleFilter(
- field_name='author__id')
- tags = filters.AllValuesMultipleFilter(
- field_name='tags__slug')
- is_favorited = filters.BooleanFilter(
- method='is_favorited_filter')
- is_in_shopping_cart = filters.BooleanFilter(
- method='is_in_shopping_cart_filter'
- )
- class Meta:
- model = Recipe
- fields = (
- 'author',
- 'tags',
- 'is_favorited',
- 'is_in_shopping_cart',
- )
- def is_favorited_filter(self, queryset, name, value):
- if value:
- user = self.request.user
- return queryset.filter(favorites__user_id=user.id)
- return queryset
- def is_in_shopping_cart_filter(self, queryset, name, value):
- if value:
- user = self.request.user
- return queryset.filter(shopping_list__user_id=user.id)
- return queryset
- # Настройки Пагинации:
- REST_FRAMEWORK = {
- 'DEFAULT_PERMISSION_CLASSES': (
- 'rest_framework.permissions.IsAuthenticatedOrReadOnly',
- ),
- 'DEFAULT_AUTHENTICATION_CLASSES': (
- 'rest_framework.authentication.TokenAuthentication',
- ),
- 'DEFAULT_FILTER_BACKENDS': (
- 'django_filters.rest_framework.DjangoFilterBackend',
- ),
- 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
- 'PAGE_SIZE': 6,
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement