2017-08-22 2 views
1

私はdjango-rest-frameworkを使用しています - モデルシリアライザのフィールドの名前を(リストに)変更し、リストで名前を変更した(更新する)同じ名前で更新したいとします。 putpatchで名前("configname" , "macAddress")で更新する方法Djangoモデルシリアライザ

class ConfiglistSerializer(serializers.ModelSerializer): 

    class Meta: 
     model = Config 
     fields = ('id', 'configname', 'mac_address') 
    def to_representation(self, obj): 
     return { 
      'id': obj.id, 
      'configname': obj.name, 
      'macAddress': obj.mac_address 
     } 

+0

の作品がどのようにですかシリアライザフィールドに、ここでhttp://www.django-rest-framework.org/api-guide/fields/を参照してください - http://www.django-rest-framework.org/api-guide/serializers/#partial-updates –

答えて

0

更新時に何かをする必要はありませんせずにAPIで

REST_FRAMEWORK = { 

    'DEFAULT_RENDERER_CLASSES': (
     'djangorestframework_camel_case.render.CamelCaseJSONRenderer', 
     # Any other renders 
    ), 

    'DEFAULT_PARSER_CLASSES': (
     'djangorestframework_camel_case.parser.CamelCaseJSONParser', 
     # Any other parsers 
    ), 
} 

あなたのシリアライザにsnake_caseで作業することができますその方法、およびキャメルケース。 serializer fieldsを使用し、ソースパラメータを指定することで、必要な名前のフィールドを定義するだけです。残りのフレームワークセリライザは他の部分を行います。

例: macAddress = serializers.CharField(source='mac_address')

ここ

+0

@Rameshあなたの期待は何ですか?正確に教えてください。 – Rajez

+0

ありがとう、ちょうど私はこれを必要としています...ありがとうnanbaaaaa @ Rajez –

+0

大丈夫です。答えが正しければ、なぜそれが投票された.. .. – Rajez

0

マットは、あなたがこのシンプルなソリューションによって

class ConfiglistSerializer(serializers.ModelSerializer): 
    configname = serializers.CharField(source='name') 
    macAddress = serializers.CharField(source='mac_address') 

    class Meta: 
     model = Config 
     fields = ('id', 'configname', 'macAddress') 

を行うことができますことあなたはキャメルケースのためのパーサーとレンダラを使用する必要が

1

が必要な場合は、フィールドの型を置き換える:

$ pip install djangorestframework-camel-case 

とTOをあなたのdjango設定ファイルにレンダリングとパーサを追加してください。カスタムto_representation方法

関連する問題