Я хочу иметь возможность обновить любое поле в модели «Аккаунт», но продолжал получать это сообщение от почтальона:
Пожалуйста, есть ли способ, которым я могу сделать обновить объект без изменения модели учетной записи?
models.py
class Account(models.Model):
full_name = models.CharField(max_length=255)
email = models.EmailField(unique=True)
password = models.CharField(max_length=255)
date_created = models.DateTimeField(auto_now_add=True)
last_updated = models.DateTimeField(auto_now=True)
status = models.CharField(max_length=12, auto_created=True, default='ACTIVE')
phone_number = PhoneNumberField(region='NG')
class Meta:
ordering = ['date_created']
serializers.py
def update(self, instance, validated_data):
# instance.email = validated_data.get('email', instance.email)
print(instance.password)
instance.password = validated_data.get('password', instance.password)
instance.phone_number = validated_data.get('phone_number', instance.phone_number)
instance.full_name = validated_data.get('full_name', instance.full_name)
instance.save()
return instance
views.py
@api_view(['PUT', ])
def update_user_account_view(request, pk):
user_account = query_db(pk)
print(user_account.__dict__)
print(request.data)
serializer = AccountSerializer(user_account, data=request.data)
print(serializer)
data = {}
if serializer.is_valid():
serializer.update(user_account, request.data)
data['response'] = "User updated successfully."
return JsonResponse(data=data)
return JsonResponse(serializer.errors, status=status.HTTP_400_BAD_REQUEST)