rest_framework doesn't have a serializers.ReadOnlyField
authorScott Baker <smbaker@gmail.com>
Tue, 23 Dec 2014 19:13:52 +0000 (11:13 -0800)
committerScott Baker <smbaker@gmail.com>
Tue, 23 Dec 2014 19:13:52 +0000 (11:13 -0800)
planetstack/apigen/api.template.py

index 455248e..9edaaa2 100644 (file)
@@ -10,6 +10,13 @@ from django.forms import widgets
 from rest_framework import filters
 from django.conf.urls import patterns, url
 
+if hasattr(serializers, "ReadOnlyField"):
+    # rest_framework 3.x
+    IdField = serializers.ReadOnlyField
+else:
+    # rest_framework 2.x
+    IdField = serializers.Field
+
 """
     Schema of the generator object:
         all: Set of all Model objects
@@ -97,7 +104,7 @@ class XOSModelSerializer(serializers.ModelSerializer):
 {% for object in generator.all %}
 
 class {{ object.camel }}Serializer(serializers.HyperlinkedModelSerializer):
-    id = serializers.ReadOnlyField()
+    id = IdField()
     {% for ref in object.refs %}
     {% if ref.multi %}
     {{ ref.plural }} = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='{{ ref }}-detail')
@@ -119,7 +126,7 @@ class {{ object.camel }}Serializer(serializers.HyperlinkedModelSerializer):
         fields = ('humanReadableName', 'validators', {% for prop in object.props %}'{{ prop }}',{% endfor %}{% for ref in object.refs %}{%if ref.multi %}'{{ ref.plural }}'{% else %}'{{ ref }}'{% endif %},{% endfor %})
 
 class {{ object.camel }}IdSerializer(XOSModelSerializer):
-    id = serializers.ReadOnlyField()
+    id = IdField()
     {% for ref in object.refs %}
     {% if ref.multi %}
     {{ ref.plural }} = serializers.PrimaryKeyRelatedField(many=True,  queryset = {{ ref.camel }}.objects.all())