2017-01-28 6 views
0

に名前値を送信することはできませんが、私はこのコードを持って:Djangoのシリアライザオーバライド「名前」とDB

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) 

をし、私は名前を上書きするために行うことができますが、Djangoはrestapiから名前値を送信できるようにするかを理解しようとしています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') 
関連する問題