2014-10-15 4 views
0

В Django Я хочу сериализации (через Rest) а Lecteur объект которым выглядит следующим образом:AssertionError при сериализации объекта в Django

from django.db import models 
from django.contrib.auth.models import User 

class Lecteur(User): 
    bibliotheque = models.ManyToManyField('bibliotheque.Livre') 

И сериализатор:

from rest_framework import serializers 
from .models import Lecteur 
from bibliotheque.serializers import LivreSerializer 

class LecteurSerializer(serializers.ModelSerializer): 
    bibliotheque = LivreSerializer(source='bibliotheque') 
    class Meta: 
     model=Lecteur 
     fields = ('bibliotheque') 

Проблема заключается в том, что я есть AssertionError, когда я оцениваю эту линию serializer = LecteurSerializer(lecteur) на мой взгляд:

@csrf_exempt 
def bibliotheque(request, id): 
    """ 
    Show user's bibliotheque \w id  
    """ 
    try: 
     lecteur = Lecteur.objects.get(id=id) 
    except Lecteur.DoesNotExist: 
     return HttpResponse(status=404) 

    if request.method == 'GET': 
     serializer = LecteurSerializer(lecteur) 
     return JSONResponse(serializer.data) 

Надеюсь, вы сможете помочь.

ответ

0

Прежде всего, вы должны предоставить полную информацию о трассировке, чтобы мы могли решить проблему без воссоздания всей вашей среды. Это здравый смысл.

Вот проблема:

fields = ('bibliotheque') 

Как говорит ошибка утверждения, поля должны быть список или кортеж, или другой итерацию.

Здесь вы должны undersntand одно: Синтаксис кортежа Python с синтаксисом порядка операций. Итак, ('a') == 'a'. Чтобы создать кортеж одного элемента, вы должны использовать хак: ('a',). Обратите внимание на запятую!

Так что, если ваш случай, исправить будет:

fields = ('bibliotheque',) 
+0

Спасибо за ваш ответ, но это не работает. Вот полная трассировка: http://pastebin.com/b1fD2SXS – Totem

+0

@Totem, можете ли вы обеспечить полную отслеживание вашей ошибки? – dt0xff

+0

Я отредактировал свой первый комментарий, вы заметили pastbinlink? Если да, то что я могу добавить, чтобы дать вам полное представление о проекте? – Totem

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