Skip to content

Instantly share code, notes, and snippets.

View akshar-raaj's full-sized avatar
💭
Learning something new everyday!

Akshar Raaj akshar-raaj

💭
Learning something new everyday!
View GitHub Profile
@akshar-raaj
akshar-raaj / urls.py
Created July 7, 2019 19:21
Search urlpattern
urlpatterns = [
path('questions/', views.QuestionsAPIView.as_view())
]
@akshar-raaj
akshar-raaj / views.py
Created July 7, 2019 19:32
APIView with filter
from rest_framework import filters
class QuestionsAPIView(generics.ListCreateAPIView):
search_fields = ['question_text']
filter_backends = (filters.SearchFilter,)
queryset = Question.objects.all()
serializer_class = QuestionSerializer
import datetime
from django.db import models
from django.utils import timezone
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published', null=True)
author = models.CharField(max_length=200, null=True)
class QuestionSerializer(serializers.ModelSerializer):
class Meta:
model = Question
fields = ('pub_date', 'question_text', 'choice_set')
class QuestionsView(APIView):
def post(self, request, *args, **kwargs):
serializer = QuestionSerializer(data=request.data)
if serializer.is_valid():
question = serializer.save()
serializer = QuestionSerializer(question)
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
@akshar-raaj
akshar-raaj / serializers.py
Created July 8, 2019 07:33
ChoiceSerializer
class ChoiceSerializer(serializers.ModelSerializer):
class Meta:
model = Choice
fields = ('choice_text',)
@akshar-raaj
akshar-raaj / serializers.py
Created July 8, 2019 07:35
QuestionSerializer
class QuestionSerializer(serializers.ModelSerializer):
choice_set = ChoiceSerializer(many=True)
class Meta:
model = Question
fields = ('pub_date', 'question_text', 'choice_set')
@akshar-raaj
akshar-raaj / serializers.py
Created July 8, 2019 07:36
QuestionSerializer with overridden create()
class QuestionSerializer(serializers.ModelSerializer):
choice_set = ChoiceSerializer(many=True)
class Meta:
model = Question
fields = '__all__'
def create(self, validated_data):
choice_validated_data = validated_data.pop('choice_set')
@akshar-raaj
akshar-raaj / filters.py
Created July 8, 2019 12:44
DynamicSearchFilter
class DynamicSearchFilter(filters.SearchFilter):
def get_search_fields(self, view, request):
return request.GET.getlist('search_fields', [])
@akshar-raaj
akshar-raaj / views.py
Created July 8, 2019 12:50
View with DynamicSearchFilter
class QuestionsAPIView(generics.ListCreateAPIView):
filter_backends = (DynamicSearchFilter,)
queryset = Question.objects.all()
serializer_class = QuestionSerializer