2015-09-23 4 views
0

Я работаю над REST API в Django.Как обрабатывать запрос, содержащий список объектов JSON

Вот мое мнение:

if request.method == 'GET': 
    print "In get*****************" 
    print "Request",request 
    queryset = Beer.objects.all() 
    serializer = BeerSerializer(queryset, many=True) 
    return Response(serializer.data) 

elif request.method == 'POST': 
    print "In get*****************" 
    print "Request",request.data 
    serializer = FosterSerializer(data=request.data) 
    if serializer.is_valid(): 
    serializer.save() 
    return Response(serializer.data, status=status.HTTP_201_CREATED) 
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) 

Он работает отлично с

curl -X POST http://192.168.2.241:8080/beers/ \ 
    -d '{"beer_type": "blond", "brand": "Foster" ,"ml": "6000"}' \ 
    -H "Content-Type: application/json" 

, но не работает с

curl -X POST http://192.168.2.241:8080/beers/ \ 
    -d '[{"beer_type": "Mild1", "brand": "Foster" ,"ml": "199"},{"beer_type": "Mild", "brand": "Foster" ,"ml": "2"}]' \ 
    -H "Content-Type: application/json" 

Как я могу обработать список объектов JSON?

+0

возможно дубликат [Как создать несколько экземпляров модели с Django Framework Rest?] (HTTP: // stackoverflow.com/questions/14666199/how-do-create-multiple-model-instances-with-django-rest-framework) –

ответ

0

Я думаю, что вы ищете создание нескольких объектов в одном запросе. Если вы передаете many = True при создании класса сериализатора для модели, он может принимать несколько объектов.

Это упоминается в Джанго остальных рамочные документы

here
class FosterSerializer(serializers.ModelSerializer): 
def __init__(self, *args, **kwargs): 
    many = kwargs.pop('many', True) 
    super(FosterSerializer, self).__init__(many=many, *args, **kwargs) 

class Meta: 
    model = Beer 
    fields = ('loads', 'of', 'fields',) 

Источник: How do I create multiple model instances with Django Rest Framework?

+1

Хотя эта ссылка может ответить на вопрос, лучше включить основные части ответа здесь и укажите ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. – SingerOfTheFall

+0

Соответственно отредактирует ответ. –

Смежные вопросы