diff --git a/test_read_only_default/test_read_only_default.py b/test_read_only_default/test_read_only_default.py new file mode 100644 index 000000000..df17eef22 --- /dev/null +++ b/test_read_only_default/test_read_only_default.py @@ -0,0 +1,60 @@ +from django.db import models +from rest_framework import serializers +from rest_framework.validators import ( + UniqueTogetherValidator, +) + +from rest_framework import viewsets +import json +from rest_framework import mixins +from rest_framework import generics +from rest_framework.views import APIView +from rest_framework.response import Response +from rest_framework import status +from django.test import TestCase +from rest_framework import status + + +class ModelTwo(models.Model): + testfieldtwo = models.CharField(max_length=60, primary_key=True) + +class ModelOne(models.Model): + testfield = models.ForeignKey(ModelTwo, on_delete=models.CASCADE) + alias = models.CharField(max_length=60) + name = models.CharField(max_length=60) + + class Meta: + unique_together = ('testfield', 'name',) + + +class ExampleSerializer(serializers.ModelSerializer): + altername = serializers.CharField(source="testfield", default=ModelTwo(testfieldtwo="model 2 default"), read_only=True) + + class Meta: + model = ModelOne + fields = ('altername' ,'alias', 'name') + validators = [ + UniqueTogetherValidator( + queryset=ModelOne.objects.all(), + fields=('testfield', 'name') + ) + ] + +class ExampleViewSet(mixins.CreateModelMixin, + mixins.UpdateModelMixin, + viewsets.ReadOnlyModelViewSet): + + queryset = ModelOne.objects.all() + serializer_class = ExampleSerializer + + +class ExampleTests(TestCase): + + def url(self): + return '/example/' + + def test_created_successfully(self): + name = 'blab blah' + alias = 'ab ab' + response = self.client.post(self.url, {'name': name, 'alias': alias}) + self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.data) diff --git a/test_read_only_default/urls.py b/test_read_only_default/urls.py new file mode 100644 index 000000000..771983904 --- /dev/null +++ b/test_read_only_default/urls.py @@ -0,0 +1,11 @@ +from django.conf.urls import include, url +from rest_framework import routers +from test_read_only_default import ExampleViewSet + +router = routers.DefaultRouter() +router.register(r'example', ExampleViewSet) + +urlpatterns = [ + url('', include(router.urls)), + url('api-auth/', include('rest_framework.urls', namespace='rest_framework')) +] \ No newline at end of file