如何访问self.data ['my_field_here']

时间:2015-09-13 23:30:27

标签: python django django-rest-framework

我正在使用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'] ??

0 个答案:

没有答案