我正在使用Django Rest Framework。在我的Serializer的创建功能(如下所示)中,我打印自己。输出(也显示如下)包括字段self.data ['is_barber']。
如何访问该字段的值?
每当我尝试访问self.data时,都会收到'Python递归限制已达到'错误..
串行:
class UserSerializer(serializers.ModelSerializer):
token = serializers.SerializerMethodField()
is_barber = serializers.SerializerMethodField()
class Meta:
model = User
fields=('email', 'password', 'id', 'token', 'is_barber')
write_only_fields = ('password',)
read_only_fields = ('is_staff', 'is_superuser', 'is_active', 'date_joined', 'is_barber')
def get_token(self, validated_data):
email = str(validated_data)
user = User.objects.get(email=email)
token = Token.objects.get(user=user)
return token.key
def get_is_barber(self, validated_data):
print 'SELF:'
print self
email = str(validated_data)
user = User.objects.filter(email=email)
profile = UserProfile.objects.get(user=user)
return profile.is_barber
def create(self, validated_data, *args, **kwargs):
"""
Create and return a new User instance, given the validated data.
"""
password = validated_data.pop('password', None)
email = validated_data.pop('email', None)
instance = self.Meta.model(**validated_data)
if password is not None:
instance.set_password(password)
if email is not None:
instance.username = email.lower()
instance.email = email.lower()
instance.save()
return instance
打印结果SELF:
自我
UserSerializer(context={u'view': <barbers.views.UserList object>, u'request': <rest_framework.request.Request object>, u'format': None}, data={u'password': u'pass', u'is_barber': u'True', u'email': u'beeeastly@gmail.com'}):
email = EmailField(allow_blank=True, label='Email address', max_length=254, required=False)
password = CharField(max_length=128, write_only=True)
id = IntegerField(label='ID', read_only=True)
token = SerializerMethodField()
is_barber = SerializerMethodField()
如何访问self.data ['is_barber'] ??