У меня проблемы с обновлением моего объекта User, так как мой запрос отправляет «идентификатор клиента» (пример: 12), но мой сериализатор y ожидает диктовку
Чтобы быть более понятным, вот сообщение, которое яполучить: Неверные данные.Ожидал словарь, но получил int.
Я пытаюсь зарегистрироваться, чтобы обновить поле моего клиента от моего пользователя, который является ForeingKey
, вот мой просмотр.py:
def update(self, request, *args, **kwargs):
try:
customer = BankCustomer.objects.filter(id=request.data.get('customer'))
serializer = UserSerializer(customer, data=request.data)
except BankCustomer.DoesNotExist:
return Response(None, status=status.HTTP_400_BAD_REQUEST)
if serializer.is_valid():
serializer.save()
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
return Response(serializer.data, status=status.HTTP_200_OK)
user serializers.py:
class UserSerializer(serializers.ModelSerializer):
customer = BankCustomerSerializer()
email = serializers.EmailField()
class Meta:
model = User
fields = ('id', 'email', 'name', 'lastname', 'type', 'customer', 'is_blocked')
def update(self, instance, validated_data):
instance.customer = validated_data.get("customer", instance.customer)
instance.email = validated_data.get("title", instance.email)
instance.name = validated_data.get("name", instance.name)
instance.lastname = validated_data.get("lastname", instance.lastname)
return instance
сериализатор клиента:
class BankCustomerSerializer(serializers.ModelSerializer):
users = serializers.PrimaryKeyRelatedField(many=True, source='customer_r', queryset=User.objects.all(), default='')
class Meta:
model = BankCustomer
fields = ('id', 'customer', 'ruc', 'address', 'phone', 'users')