Как сделать POST / PATCH пользовательскую модель с помощью django restful api - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть магазин django oscar, и я добавил в свою модель пользователя поле обработки:

class User(AbstractUser):
treatment = models.CharField(max_length=128)

Теперь я хочу расширить API django oscar для публикации или исправления пользователя (я хочу изменить"treatment").

Если я захожу на http://localhost:8000/api/users/ и пытаюсь опубликовать новое, я просто получаю эту ошибку:

TypeError at /api/users/
int() argument must be a string, a bytes-like object or a number, not 'DeferredAttribute'

Кто-нибудь знает, каксправиться с этим?

views.py:

class UserList(basic.UserList):
    queryset = User.objects.all()     
    serializer_class = CreateUserSerializer

        def post(self, request, format=None):         
    v_ser = self.serializer_class( data=request.data, context={'request': request}) 
    if v_ser.is_valid():            
        ser = self.serializer_class( User, context={'request': request}) 
        return Response(ser.data)

return Response(v_ser.errors, status=status.HTTP_406_NOT_ACCEPTABLE)

serializers.py:

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

    email = serializers.EmailField()    
    treatment = serializers.CharField(max_length=128, required=True)

def validate(self, attrs):

    #oscar expects this always to be uppercase.
    attrs['treatment'] = attrs['treatment'].upper()
    request = self.context.get('request') 
    return attrs



def create(self, validated_data): 
    return User.objects.create(**validated_data)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...