class CountrySerializer(HyperlinkedModelSerializer): """ HyperlinkedModelSerializer for Country. """ url = relations.HyperlinkedIdentityField( view_name='cities-light-api-country-detail') class Meta: model = Country
class RegionSerializer(HyperlinkedModelSerializer): """ HyperlinkedModelSerializer for Region. """ url = relations.HyperlinkedIdentityField( view_name='cities-light-api-region-detail') country = relations.HyperlinkedRelatedField( view_name='cities-light-api-country-detail') class Meta: model = Region
def field_to_native(self, obj, field_name): result = {} for link in self.data: label = link['label'] kwargs = copy.copy(link) del kwargs['label'] field = relations.HyperlinkedIdentityField(**kwargs) field.initialize(self.parent, label) result[label] = field.field_to_native(obj, label) return result
class CountrySerializer(HyperlinkedModelSerializer): """ HyperlinkedModelSerializer for Country. """ url = relations.HyperlinkedIdentityField( view_name='cities-light-api-country-detail') id = IntegerField(read_only=True) class Meta: model = Country fields = '__all__'
class RegionSerializer(HyperlinkedModelSerializer): """ HyperlinkedModelSerializer for Region. """ url = relations.HyperlinkedIdentityField( view_name='cities-light-api-region-detail') country = relations.HyperlinkedRelatedField( view_name='cities-light-api-country-detail', read_only=True) id = IntegerField(read_only=True) class Meta: model = Region exclude = ('slug',)
class CitySerializer(HyperlinkedModelSerializer): """ HyperlinkedModelSerializer for City. """ url = relations.HyperlinkedIdentityField( view_name='cities-light-api-city-detail') country = relations.HyperlinkedRelatedField( view_name='cities-light-api-country-detail', read_only=True) region = relations.HyperlinkedRelatedField( view_name='cities-light-api-region-detail', read_only=True) class Meta: model = City exclude = ('slug', )
class DraftSerializer(serializers.ModelSerializer): """Serializer for Drafts, appropriate for list views. No files metadata.""" class Meta: model = Draft queryset = Draft.objects.all().select_related('bundle') fields = ('uuid', 'url', 'bundle', 'bundle_uuid', 'name') url = relations.HyperlinkedIdentityField( lookup_field='uuid', view_name='api:v1:draft-detail', ) bundle = relations.HyperlinkedRelatedField( lookup_field='uuid', lookup_url_kwarg='bundle_uuid', view_name='api:v1:bundle-detail', read_only=True, ) bundle_uuid = relations.SlugRelatedField( source='bundle', slug_field='uuid', queryset=Bundle.objects.all(), )