0

serializerリスト引数を取るを作成しましたtagsが、django-rest-frameworkブラウズ可能な API では動作しないようです。

コード:

モデル

class SocialFeed(Document):
    platform = StringField(max_length=20, required=True, choices=('facebook', 'twitter', 'instagram'))
    tags = ListField(default=None)
    created_at = DateTimeField(default=datetime.now(), required=True)

シリアライザ

class SocialFeedCreateSerializer(DocumentSerializer):
    class Meta:
        model = SocialFeed
        fields = [
            'id',
            'platform',
            'tags'
        ]

意見

class SocialFeedCreateAPIView(CreateAPIView):
    queryset = SocialFeed.objects.all()
    serializer_class = SocialFeedCreateSerializer

しかし、ブラウズ可能APIでは、タグを入力するための簡単な入力ボックスが表示されます。ブラウズ可能側でタグをどの形式で入力すればよいかわかりませんAPI。また、文字列ではなくタグのリストを受け取りません。

次の入力を試しました:

#1 - ['social media', 'digital media', 'digital']
#2 - 'social media', 'digital media', 'digital'
#3 -  social media, digital media, digital
#4 - "social media", "digital media", "digital"

しかしMongoDb、ドキュメントを取得すると、次のように、タグのリストの代わりに文字列が表示されます。

"tags" : [
    "['social media','digital media','digital']"
]

"tags" : [
    "'social media','digital media','digital'"
]

"tags" : [
    "social media, digital media, digital]"
]

"tags" : [
    "\"social media\", \"digital media\", \"digital\""
]

必要な出力

"tags" : [
    "social media",
    "digital media",
    'digital"
]

誰かが同じ問題に直面している場合は、私を導いてください。

4

1 に答える 1

1

DRF は Django のフィールドのみをサポートします。tagsから継承するように、シリアライザーの宣言でいくつかのフィールドをより明示的にする必要がある可能性がありますserializer.ListField

于 2016-09-30T09:48:57.417 に答える