2014-12-30 15 views
5

Podążam za strukturą Django Rest Framework tutorial on serializers, ale znajduję nietypowe zachowanie. Gdzie repr print (serializer_instance) najwyraźniej miał drukować przydatnych inspekcję, mogę tylko dostać z powrotem tę reprezentację:Reprezentacja serializatora Django Rest Framework nie działa

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

My code wydaje się wyrównać dokładnie z informacjami zawartymi w poradniku, i używam Django 1.7 i Python 2.7. Czy ktoś ma pojęcie, dlaczego tak się dzieje?

fragmenty/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') 

fragmenty/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

Ja również nie widząc pełny „repr” wyjście na swojej skorupy, że poradnik sugeruje, że powinniśmy see - w/Django 1.6, niezależnie od tego, z jakiego serializatora korzystam. – maxm

Odpowiedz

0

Wierzę, że to dlatego, że wracają obiekt serializer . W celu powrotu rzeczywiste dane muszą odnosić się do atrybutu danych:

print repr(serializer.data) 
+2

To pokazuje mi dane (podobnie jak zwykły "print serializer.data"). Ale w samouczku "repr (serializer)" służy do badania schematu serializera - wszystkich jego nazw kolumn, typów i walidacji. Tego właśnie szukam –

2

miałem ten sam problem, aż zdałem sobie sprawę, że miałem zainstalowaną wersję 2.4.

Wystarczy przeczytać informacje o wersji i aktualizacji do wersji 3.0

Np jeśli używasz requirements.txt zmienić resztę linii ramową do:

djangorestframework==3.0 

i uruchomić

pip install -r requirements.txt 
Powiązane problemy