Django Rest Frameworkを使用して特定のテーブルの行を一括作成しようとしています。私はdocumentationに、DRFがそれをサポートしていることが分かります。Django Rest FrameworkのListSerializerを使用して一括作成
views.py
class UserProfileFeedViewSet(viewsets.ModelViewSet):
"""Handles creating, reading and updating profile feed items."""
authentication_classes = (TokenAuthentication,)
queryset = models.ProfileFeedItem.objects.all()
serializer_class = serializers.ProfileFeedItemSerializer(queryset, many=True)
permission_classes = (permissions.PostOwnStatus, IsAuthenticated)
def perform_create(self, serializer):
"""Sets the user profile to the logged in user."""
serializer.save(user_profile=self.request.user)
serializers.py
class ProfileFeedItemListSerializer(serializers.ListSerializer):
def create(self,validated_data):
feed_list = [ProfileFeedItem(**item) for item in validated_data]
return ProfileFeedItem.objects.bulk_create(feed_list)
class ProfileFeedItemSerializer(serializers.ModelSerializer):
"""A serializer for profile feed items."""
class Meta:
model = models.ProfileFeedItem
list_serializer_class = ProfileFeedItemListSerializer
fields = ('id', 'user_profile', 'status_text', 'created_on')
extra_kwargs = {'user_profile': {'read_only': True}}
私は常に、このエラーを取得し、管理フォームを使用して投稿してみてください。ここで間違っていることを特定するのを助けてくれますか?
TypeError at /api/feed/ 'ProfileFeedItemListSerializer' object is not callable Request Method: GET Request URL: http://127.0.0.1:8080/api/feed/ Django Version: 1.11 Exception Type: TypeError Exception Value: 'ProfileFeedItemListSerializer' object is not callable Exception Location: /home/ubuntu/.virtualenvs/profiles_api/local/lib/python3.5/site-packages/rest_framework/generics.py in get_serializer, line 111 Python Executable: /home/ubuntu/.virtualenvs/profiles_api/bin/python Python Version: 3.5.2
この辞書を使用して単一の辞書データセットを投稿することができますが、辞書の投稿リストはそのままです ** AttributeError: 'list'オブジェクトには属性 'get'がありません** – Prasanna
答えに誤字が見つかりました。 –
私は、コードフローがperform_createに達していないデータセットのリストを渡します。データは常に辞書として渡されることを期待しています。 受信データが辞書のリストであり、1つの辞書ではないことをDRFに伝える方法が必要です。 – Prasanna