save address cascade for establishment

This commit is contained in:
a.gorbunov 2020-02-07 08:27:54 +00:00
parent 12b56da53a
commit b6cf12f35c
2 changed files with 11 additions and 8 deletions

View File

@ -167,13 +167,9 @@ class EstablishmentListCreateSerializer(model_serializers.EstablishmentBaseSeria
validated_data['slug'] = slug
if 'address' in validated_data:
address_fields = validated_data.pop('address')
address_instance = get_object_or_404(models.Address, id=address_fields['id'] or None)
address_id = getattr(address_instance, 'id')
models.Address.objects.filter(id=address_id).update(**address_fields)
validated_data['address_id'] = address_id
address = models.Address(**validated_data.pop('address'))
address.save()
validated_data['address_id'] = address.id
instance = super().create(validated_data)

View File

@ -223,11 +223,17 @@ class AddressBaseSerializer(serializers.ModelSerializer):
class AddressEstablishmentSerializer(AddressBaseSerializer):
"""Address serializer."""
id = serializers.IntegerField(required=True)
id = serializers.IntegerField(required=False)
street_name_1 = serializers.CharField(required=False, default='')
street_name_2 = serializers.CharField(required=False, default='')
number = serializers.IntegerField(required=False, default=0)
postal_code = serializers.CharField(required=False, default='')
city_id = serializers.PrimaryKeyRelatedField(
source='city',
queryset=models.City.objects.all(),
write_only=True,
required=True,
)
class Meta(AddressBaseSerializer.Meta):
"""Meta class."""
@ -238,6 +244,7 @@ class AddressEstablishmentSerializer(AddressBaseSerializer):
'street_name_2',
'number',
'postal_code',
'city_id',
)