2017-05-22 13 views
1

PythonのモデルPythonのModelSerializer変更名は "@"

class Foo(models.Model): 
    context = models.CharField() 

シリアライザ

class FooListView(generics.ListCreateAPIView): 
    queryset = Foo.objests.all() 
    serializer_class = FooSerializer 

私の構造は上記のようなものです

class FooSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = Foo 
     fields = ("context") 

ビューに署名して開始します。そして、それは期待どおり次のJsonを生成します。

{ 
    "context": "http://json-ld.org/contexts/person.jsonld" 
} 

フィールドの先頭に「@」記号を付けることはできますか?

答えて

1

ただ、次のコードを使用してシリアライザを置き換える:

class FooSerializer(serializers.ModelSerializer): 

    class Meta: 
     model = Foo 
     fields = ("context",) 

    def to_representation(self, instance): 
     data = super(FooSerializer, self).to_representation(instance) 
     data["@context"] = instance.context 
     del data["context"] 
     return data 

:)

+0

は、私は以下のコードでそれを達成するためにトラインされましたが、それは働いていませんでした。ソリューションが機能しました。おかげで.. デフ__init __(自己、* argsを、** kwargsから): スーパー(FooSerializer、自己).__のinit __(* argsを、** kwargsから) self.fields [ "文脈"]ラベル= "。 @コンテキスト" – fkucuk

関連する問題