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 validated_data['slug'] = slug
if 'address' in validated_data: if 'address' in validated_data:
address_fields = validated_data.pop('address') address = models.Address(**validated_data.pop('address'))
address_instance = get_object_or_404(models.Address, id=address_fields['id'] or None) address.save()
address_id = getattr(address_instance, 'id') validated_data['address_id'] = address.id
models.Address.objects.filter(id=address_id).update(**address_fields)
validated_data['address_id'] = address_id
instance = super().create(validated_data) instance = super().create(validated_data)

View File

@ -223,11 +223,17 @@ class AddressBaseSerializer(serializers.ModelSerializer):
class AddressEstablishmentSerializer(AddressBaseSerializer): class AddressEstablishmentSerializer(AddressBaseSerializer):
"""Address serializer.""" """Address serializer."""
id = serializers.IntegerField(required=True) id = serializers.IntegerField(required=False)
street_name_1 = serializers.CharField(required=False, default='') street_name_1 = serializers.CharField(required=False, default='')
street_name_2 = serializers.CharField(required=False, default='') street_name_2 = serializers.CharField(required=False, default='')
number = serializers.IntegerField(required=False, default=0) number = serializers.IntegerField(required=False, default=0)
postal_code = serializers.CharField(required=False, default='') 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): class Meta(AddressBaseSerializer.Meta):
"""Meta class.""" """Meta class."""
@ -238,6 +244,7 @@ class AddressEstablishmentSerializer(AddressBaseSerializer):
'street_name_2', 'street_name_2',
'number', 'number',
'postal_code', 'postal_code',
'city_id',
) )