2016-04-07 10 views
0

Ich habe ein Problem mit Django. Ich habe alles so gemacht, wie es im Tutorial geschrieben wurde, aber wenn ich is_valid auf dem Serialisierer überprüfe, ist es immer falsch.Django Rest Framework Serializer ist gültig immer falsch

Hier ist mein Code:

models.py 
from django.db import models 


class User(models.Model): 
    userId = models.CharField(max_length=100) 
    email = models.EmailField() 

serializers.py

from .models import User 
from rest_framework import serializers 


class UserSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = User 
     fields = ('id', 'userId', 'email') 

Und ich laufe dann python manage.py shell. Dann verwende ich Befehle wie:

from belmondoapp.models import User 
from belmondoapp.serializers import UserSerializer 

u = User(userId="user", email="[email protected]") 
s = UserSerializer(data=u) 
s.is_valid() 

Und es gibt immer False zurück ... Warum? Was habe ich falsch gemacht?

+0

Überprüfen Sie 's.fehlers' nach dem Aufruf von 's.is_valid()' –

+0

Übrigens, ich denke, dass das Problem ist, dass Ihr 'u' keine ID hat (die von Ihrem Serializer benötigt wird). Sie sollten es zuerst speichern –

+0

Ich habe '' {'non_field_errors': ['Ungültige Daten. Erwartete ein Wörterbuch, aber bekam Benutzer. ']} '' Durch den Aufruf von s.errors –

Antwort

4
s = UserSerializer(data=u) 

sollte sein:

s = UserSerializer(data={"userId"="user", "email"="[email protected]"}) 

Die Serialisierung (vom Modell zum Wörterbuch) keinen Aufruf is_valid erfordern:

s = UserSerializer(instance=u) 
s.data 

Die Deserialisierung (von dict zu modellieren) akzeptiert nicht Modell:

s = UserSerializer(data={"userId"="user", "email"="[email protected]"}) 
s.is_valid() 
s.validated_data 
Verwandte Themen