2013-07-17 2 views
0

Новое в django и пытается отправить список идентификаторов на сервер для обновления некоторой информации. Я не хочу, чтобы они были модельным классом, в этом нет необходимости. Я пытаюсь сделать это в сериализаторе, чтобы убедиться, что они «чисты». Вот мой код:django не может сериализовать немодель на пост

Просмотр Класс:

class Update_Cards(APIView): 
    # This seems necessary or it will throw an error 
    queryset = Card.objects.all() 
    def post(self, request, board_id, format=None): 
     print request.DATA 
     serializer = CardMoveSerializer(data=request.DATA, many=True) 
     #this throws an error 
     print serializer.data 

     return Response(serializer.data) 

Serializer:

class CardMoveSerializer(serializers.Serializer): 
    card_id = serializers.IntegerField() 
    lane_id = serializers.IntegerField() 

Я получаю ошибку:

[{u'lane_id': 21, u'card_id': 3}] #this is to show the data is coming across the wire 
Internal Server Error: /api/board/2/updateCards 
Traceback (most recent call last): 
    File "/Library/Python/2.7/site-packages/django/core/handlers/base.py", line 115, in get_response 
    response = callback(request, *callback_args, **callback_kwargs) 
    File "/Library/Python/2.7/site-packages/django/views/generic/base.py", line 68, in view 
    return self.dispatch(request, *args, **kwargs) 
    File "/Library/Python/2.7/site-packages/django/views/decorators/csrf.py", line 77, in wrapped_view 
    return view_func(*args, **kwargs) 
    File "/Library/Python/2.7/site-packages/rest_framework/views.py", line 327, in dispatch 
    response = self.handle_exception(exc) 
    File "/Library/Python/2.7/site-packages/rest_framework/views.py", line 324, in dispatch 
    response = handler(request, *args, **kwargs) 
    File "/Users/crob/Documents/workspace/tlckanban/python/rest/views.py", line 37, in post 
    print card_moves.data 
    File "/Library/Python/2.7/site-packages/rest_framework/serializers.py", line 499, in data 
    self._data = [self.to_native(item) for item in obj] 
TypeError: 'NoneType' object is not iterable 

То, что я сделал реализуется это с simplejson анализатором на данный момент, но я чувствую, что это не лучший способ сделать это:

def update_cards(request, board_id): 
    json_data = simplejson.loads(request.body) 

    for moveIndex in range(0, len(json_data)): 
     #do some work 


    return JSONResponse(json_data, status=status.HTTP_200_OK) 

Спасибо за помощь заранее!

+1

Какие данные передаются в представление? Можете ли вы включить образец? –

+0

Похоже, что вам передано значение None, в котором приложение не нравится. –

+0

самой первой строкой сообщения об ошибке является запрос на печать.DATA на консоль. Я посылаю: [{u'lane_id ': 21, u'card_id': 3}] это единственные 2 свойства, поэтому ничего не должно быть None – stuffins

ответ

1

Перед доступом к данным вам необходимо получить доступ к 'serializer.is_valid()'. Похоже, там есть недостающий бит API - serializer.data, вероятно, должен поднять экзамен, если он был получен до проверки.

+0

Спасибо! Да, я не получил впечатления от документов, которые мне нужно назвать is_valid, я думал, что просто создание экземпляра сделало бы его доступным. Виноват. – stuffins

0

Кажется, вы не используете Django's serializers, но в любом случае сериализация не производится для проверки. Используйте forms, чтобы подтвердить свои данные, затем используйте json, как вы это сделали для его сериализации. Сериализаторы Django предназначены только для запросов и моделей.

+0

Я использую сериализатор django-rest-framework: основывая мой код на этом : http://django-rest-framework.org/tutorial/2-requests-and-responses.html – stuffins

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

  • Нет связанных вопросов^_^