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 / question-serializer-with-fields.py
Created May 7, 2019 05:59
Question Serializer with fields
class QuestionSerializer(serializers.ModelSerializer):
class Meta:
model = Question
fields = '__all__'
@akshar-raaj
akshar-raaj / create-question.py
Created May 7, 2019 06:02
Create Question with QuestionSerializer
from rest_framework.decorators import api_view
from rest_framework.response import Response
from rest_framework import status
from .models import Question
from .serializers import QuestionSerializer
@api_view(['GET', 'POST'])
def questions_view(request):
if request.method == 'GET':
@api_view(['GET', 'POST'])
def questions_view(request):
if request.method == 'GET':
questions = Question.objects.all()
serializer = QuestionSerializer(questions, many=True)
return Response(serializer.data)
elif request.method == 'POST':
serializer = QuestionSerializer(data=request.data)
if serializer.is_valid():
question = serializer.save()
@api_view(['GET', 'PATCH', 'DELETE'])
def question_detail_view(request, question_id):
question = get_object_or_404(Question, pk=question_id)
if request.method == 'GET':
serializer = QuestionSerializer(question)
return Response(serializer.data)
elif request.method == 'PATCH':
raise NotImplementedError("PATCH currently not supported")
elif request.method == 'DELETE':
raise NotImplementedError("DELETE currently not supported")
@api_view(['GET', 'PATCH', 'DELETE'])
def question_detail_view(request, question_id):
question = get_object_or_404(Question, pk=question_id)
if request.method == 'GET':
serializer = QuestionSerializer(question)
return Response(serializer.data)
elif request.method == 'PATCH':
serializer = QuestionSerializer(question, data=request.data, partial=True)
if serializer.is_valid():
question = serializer.save()
class ChoiceSerializer(serializers.ModelSerializer):
class Meta:
model = Choice
fields = ('choice_text',)
@api_view(['POST'])
def choices_view(request, question_id):
question = get_object_or_404(Question, pk=question_id)
serializer = ChoiceSerializer(data=request.data)
if serializer.is_valid():
choice = serializer.save(question=question)
return Response("Choice created with id %s" % (choice.id), status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
@akshar-raaj
akshar-raaj / question_with_choices.py
Created May 7, 2019 10:43
Question with choices
class QuestionSerializer(serializers.ModelSerializer):
class Meta:
model = Question
fields = ['id', 'pub_date', 'question_text', 'choice_set']
extra_kwargs = {
'choice_set': {'read_only': True}
}
@akshar-raaj
akshar-raaj / question_with_choice_set.py
Created May 7, 2019 10:45
Question with choice_set serializer
class QuestionSerializer(serializers.ModelSerializer):
choice_set = serializers.SlugRelatedField(slug_field='choice_text', read_only=True, many=True)
class Meta:
model = Question
fields = '__all__'
class QuestionSerializer(serializers.ModelSerializer):
choices = serializers.SlugRelatedField(slug_field='choice_text', read_only=True, many=True, source='choice_set')
class Meta:
model = Question
fields = '__all__'