Open scheung38 opened 1 year ago
Sample output is shown:
In this example I would like to flatten 'locality' Object before saving
serializer.py
class LocalitySerializer(serializers.HyperlinkedModelSerializer): class Meta: model = Locality fields = ('_id', 'locality_key', 'filler1', 'filler2', 'post_town', 'dependent_locality', 'double_dependent_locality') class AddressSerializer(serializers.HyperlinkedModelSerializer): locality = LocalitySerializer() locality_id = serializers.Field(source='locality._id') locality_locality_key = serializers.Field(source='locality.locality_key') locality_filler1 = serializers.Field(source='locality.filler1') locality_filler2 = serializers.Field(source='locality.filler2') locality_post_town = serializers.Field(source='locality.post_town') locality_dependent_locality = serializers.Field(source='locality.dependent_locality') locality_double_dependent_locality= serializers.Field(source='locality.double_dependent_locality') class Meta: model = Address fields = ('outward_code', 'inward_code', 'locality')
model.py
from djongo import models class Locality(models.Model): _id = models.ObjectIdField() locality_key = models.PositiveIntegerField(unique=True, help_text="The Locality Key") filler1 = models.CharField(max_length=30, blank=True, help_text="First Filler") filler2 = models.CharField(max_length=15, blank=True, help_text="Second Filler") post_town = models.CharField(max_length=30, blank=True, help_text="post town") dependent_locality = models.CharField( max_length=35, blank=True, help_text="Dependent Locality" ) double_dependent_locality = models.CharField( max_length=35, blank=True, help_text="Double Dependent Locality" ) class Meta: abstract = False ordering = [ "post_town", ] def __str__(self): return self.post_town @property def locality_set(self): # if self.locality: ## where is locality # loc_set = set((self.locality.filler1).split(' ')) # loc_set.update(set((self.locality.filler2).split(' '))) loc_set = list((self.post_town).split(" ")) loc_set.extend((self.dependent_locality).split(" ")) loc_set.extend((self.double_dependent_locality).split(" ")) return loc_set @property def locality_dict(self): locality_dict = {} locality_dict['_id'] = self._id locality_dict['locality_key'] = self.locality_key locality_dict['filler1'] = self.filler1 locality_dict['filler2'] = self.filler2 locality_dict['post_town'] = self.post_town locality_dict['dependent_locality'] = self.dependent_locality locality_dict['double_dependent_locality'] = self.double_dependent_locality return locality_dict class Address(models.Model): outward_code = models.CharField( max_length=4, blank=True, help_text="Postcode: Outward Code" ) inward_code = models.CharField( max_length=3, blank=True, help_text="Postcode: Inward Code" ) locality = models.EmbeddedField( model_container=Locality, ) objects = models.DjongoManager()
Used 'source=' attribute but it is still not flattened?
Sample output is shown:
In this example I would like to flatten 'locality' Object before saving
serializer.py
model.py
Used 'source=' attribute but it is still not flattened?