Reputation: 267
I have a simple serializer in my serializers.py. When I want to send wrong data in the serializer and checking serializer.is_valied() it returns true. Why it returns true?
My Models.py:
class UserRole(models.Model):
role = models.CharField(max_length = 100, blank=True, null=True)
permission_read = models.BooleanField(null=True)
permission_edit = models.BooleanField(null=True)
permission_write = models.BooleanField(null=True)
permission_delete = models.BooleanField(null=True)
superuser = models.BooleanField(null=True)
def __str__(self):
return self.role
My serializers.py:
class CreateRoleSerializers(serializers.ModelSerializer):
class Meta:
model = UserRole
exclude = ['superuser']
My views.py:
@api_view(['POST'])
@permission_classes([IsAuthenticated])
@write_required
def user_role_api(request):
if request.method == 'POST':
json = JSONRenderer().render(request.data)
stream = io.BytesIO(json)
data = JSONParser().parse(stream)
serializer = CreateRoleSerializers(data=data)
if serializer.is_valid():
serializer.save(superuser=0)
return Response(status=rest_framework.status.HTTP_200_OK)
return Response(serializer.errors, status=rest_framework.status.HTTP_400_BAD_REQUEST)
When I do input wrong data it an entry in if block. I don't know what's wrong with this code. Thanks in advance for the help!
Upvotes: 0
Views: 794
Reputation: 1330
Pass request.data
directly to the serializer, you don't have to parse or do more steps
For ex:
serializer = CreateRoleSerializers(data=request.data)
Tip: remove null=True
from BooleanField
's and add default=False
Upvotes: 1