2014-12-30 10 views
5

Sto seguendo il Django Rest Framework tutorial on serializers, ma trovo un comportamento insolito. Dove repr stampa (serializer_instance) è apparentemente dovrebbe stampare l'ispezione utile, posso solo tornare questa rappresentazione:Rappresentazione serializer di Django Rest Framework non funzionante

<snippets.serializers.SnippetSerializer object at 0x10220f110>. 

My code sembra allinearsi esattamente con quella nel tutorial, e sto usando Django e Python 1.7 2.7. Qualcuno ha idea del perché questo potrebbe accadere?

frammenti/serializers.py:

from django.forms import widgets 
from rest_framework import serializers 
from snippets.models import Snippet, LANGUAGE_CHOICES, STYLE_CHOICES 

class SnippetSerializer(serializers.ModelSerializer): 

    class Meta: 
     model = Snippet 
     fields = ('id', 'title', 'code', 'linenos', 'language', 'style') 

frammenti/models.py:

from django.db import models 
from pygments.lexers import get_all_lexers 
from pygments.styles import get_all_styles 

LEXERS = [item for item in get_all_lexers() if item[1]] 
LANGUAGE_CHOICES = sorted([(item[1][0], item[0]) for item in LEXERS]) 
STYLE_CHOICES = sorted((item, item) for item in get_all_styles()) 

class Snippet(models.Model): 
    created = models.DateTimeField(auto_now_add=True) 
    title = models.CharField(max_length=100, blank=True, default='') 
    code = models.TextField() 
    linenos = models.BooleanField(default=False) 
    language = models.CharField(choices=LANGUAGE_CHOICES, default='python', max_length=100) 
    style = models.CharField(choices=STYLE_CHOICES, default='friendly', max_length=100) 

    class Meta: 
     ordering = ('created',) 

shell:

$ python manage.py shell_plus 
>>> from snippets.serializers import SnippetSerializer 
>>> serializer = SnippetSerializer() 
>>> serializer 
    <snippets.serializers.SnippetSerializer object at 0x10220f110> 
>>> print repr(serializer) 
    <snippets.serializers.SnippetSerializer object at 0x10220f110> 
+0

non sto vedendo anche il verbose "repr" output sul mio guscio che il tutorial suggerisce che dovremmo be seeing - w/Django 1.6, indipendentemente da quale serializzatore io uso – maxm

risposta

0

Credo che questo sia perché si restituisce l'oggetto serializzatore . Al fine di restituire i dati effettivi si deve fare riferimento alla attributo data:

print repr(serializer.data) 
+2

Questo mi mostra i dati (proprio come fa semplicemente 'print serializer.data'). Ma nel tutorial, 'repr (serializer)' è usato per esaminare lo schema del serializzatore - tutti i suoi nomi di colonna, tipi e validazioni. Questo è quello che sto cercando –

2

Ho avuto lo stesso problema fino a quando ho capito che avevo versione 2.4 installata.

Basta leggere le note di rilascio e l'aggiornamento alla versione 3.0

Ad es se si utilizza un requirements.txt, modificare la riga quadro resto a:

djangorestframework==3.0 

ed eseguire

pip install -r requirements.txt 
Problemi correlati