Получение значения по умолчанию для поля сериализатора из метода
Я пытаюсь найти способ сделать то, что, как мне казалось, должно быть очень простым. У меня есть сериализатор, принимающий либо адрес (вложенный сериализатор), либо координаты (также вложенный сериализатор). Если пользователь предоставляет адрес, я преобразовываю его с помощью некоторой магии в координаты и хочу предоставить эти координаты в ответе. Вот что у меня есть на данный момент:
class AddressSerializer(serializers.Serializer):
zip_code = serializers.CharField()
city = serializers.CharField(required=False)
street = serializers.CharField(required=False)
house_number = serializers.CharField(required=False)
class GeoPointSerializer(serializers.Serializer):
latitude = serializers.FloatField()
longitude = serializers.FloatField()
class TheSerializer(serializers.Serializer):
address = AddressSerializer(required=False)
coordinates = GeoPointSerializer(required=False)
def validate(self, attrs):
# check if the user provided either address or coordinates
def resolve_address_to_coordinates(...):
...
и теперь я понятия не имею, как продолжить. Я знаю о SerializerMethodField
, который будет работать нормально, за исключением того, что он доступен только для чтения. Затем я играл с атрибутами default
и source
на поле coordinates
, но тоже без успеха. Может ли кто-нибудь помочь мне?