cascade save address
This commit is contained in:
parent
a9f3d3de46
commit
2235198198
|
|
@ -15,7 +15,8 @@ from establishment import models, serializers as model_serializers
|
|||
from establishment.models import ContactEmail, ContactPhone, EstablishmentEmployee
|
||||
from establishment.serializers.common import ContactPhonesSerializer
|
||||
from gallery.models import Image
|
||||
from location.serializers import AddressDetailSerializer, TranslatedField
|
||||
from location.serializers import AddressDetailSerializer, TranslatedField, AddressBaseSerializer, \
|
||||
AddressEstablishmentSerializer
|
||||
from main import models as main_models
|
||||
from main.models import Currency
|
||||
from main.serializers import AwardSerializer
|
||||
|
|
@ -57,9 +58,10 @@ class EstablishmentListCreateSerializer(model_serializers.EstablishmentBaseSeria
|
|||
address_id = serializers.PrimaryKeyRelatedField(
|
||||
source='address',
|
||||
queryset=models.Address.objects.all(),
|
||||
write_only=True
|
||||
write_only=True,
|
||||
required=False,
|
||||
)
|
||||
address = AddressDetailSerializer(read_only=True, allow_null=True)
|
||||
address = AddressEstablishmentSerializer(allow_null=True)
|
||||
transliterated_name = serializers.CharField(
|
||||
required=False, allow_null=True, allow_blank=True
|
||||
)
|
||||
|
|
@ -164,7 +166,17 @@ 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
|
||||
|
||||
instance = super().create(validated_data)
|
||||
|
||||
phones_handler(phones_list, instance)
|
||||
emails_handler(emails_list, instance)
|
||||
return instance
|
||||
|
|
|
|||
|
|
@ -207,6 +207,27 @@ class AddressBaseSerializer(serializers.ModelSerializer):
|
|||
return attrs
|
||||
|
||||
|
||||
class AddressEstablishmentSerializer(AddressBaseSerializer):
|
||||
"""Address serializer."""
|
||||
|
||||
id = serializers.IntegerField(required=True)
|
||||
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='')
|
||||
|
||||
class Meta(AddressBaseSerializer.Meta):
|
||||
"""Meta class."""
|
||||
|
||||
fields = AddressBaseSerializer.Meta.fields + (
|
||||
'id',
|
||||
'street_name_1',
|
||||
'street_name_2',
|
||||
'number',
|
||||
'postal_code',
|
||||
)
|
||||
|
||||
|
||||
class AddressDetailSerializer(AddressBaseSerializer):
|
||||
"""Address serializer."""
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user