from django.db import models from rest_framework import serializers from backend.models.location import Country from backend.models.my_model import MyModel, MyModelSerializer, MyModelVersionnedViewSet from backend.utils import get_moderation_level, get_viewset_permissions class City(MyModel): moderation_level = get_moderation_level("City") name = models.CharField(max_length=200) local_name = models.CharField(max_length=200, null=True, blank=True) # We add an area to distinguish similarly named cities # in a country area = models.CharField(max_length=200, null=True, blank=True) country = models.ForeignKey(Country, on_delete=models.PROTECT) class CitySerializer(MyModelSerializer): country_url = serializers.SerializerMethodField() def get_country_url(self, obj): return serializers.HyperlinkedRelatedField( view_name='country-detail', read_only=True) \ .get_url(obj.country, view_name='country-detail', request=self.context['request'], format=None) class Meta: model = City fields = '__all__' class CityViewSet(MyModelVersionnedViewSet): permission_classes = get_viewset_permissions("CityViewSet") queryset = City.objects.all() # pylint: disable=E1101 serializer_class = CitySerializer