Как обновить объект «Аккаунт» в django остальные модели фреймворка - PullRequest
0 голосов
/ 16 февраля 2020

Я хочу иметь возможность обновить любое поле в модели «Аккаунт», но продолжал получать это сообщение от почтальона: showing I must provide values for the attributes listed

Пожалуйста, есть ли способ, которым я могу сделать обновить объект без изменения модели учетной записи?

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)
...