2017-01-28 1 views
0

Я получил этот код:Джанго Serializer overide «имя» и не может отправить значение имени в БД

class DeviceSerializer(serializers.ModelSerializer): 
icon = serializers.CharField(source='icon_before') 
name = serializers.SerializerMethodField('_get_device_name') 

class Meta: 
    model = models.Device 
    fields = ('id', 'name', 'host', 'icon', 'status', 'featured', 'pin', 'room', 'target', 'series', 'type') 

@staticmethod 
def _get_device_name(obj): 
    return '%s - %s - %s' % (obj.name, obj.target, obj.room.name) 

, и я пытаюсь понять, что я могу сделать, чтобы переопределить имя, но чтобы Джанго отправить значение имени из restapi post в db, прямо сейчас это не так, это будет, если я удалю «name = override». Спасибо.

ответ

0

Я думаю, вам нужно иметь другое поле для достижения того, чего вы хотите достичь. Ваше _get_device_name предназначено только для чтения? Что-то вроде:

class DeviceSerializer(serializers.ModelSerializer): 
    icon = serializers.CharField(source='icon_before') 
    output_name = serializers.ReadOnlyField(source='_get_device_name') 
Смежные вопросы