Reputation: 47
my models.py is :
class clients(models.Model):
client_id = models.IntegerField(unique=True, primary_key=True )
'
'
money = models.DecimalField(max_digits=10, decimal_places=2,default=0)
class transfermoney(models.Model):
first_client_id = models.IntegerField()
second_client_id = models.IntegerField()
amountofmoney = models.PositiveIntegerField()
time = models.TimeField(auto_now=True)
date = models.DateField(auto_now=True)
my serializers.py is :
class moneytransfer(serializers.ModelSerializer):
def validate(self, data):
try:
clients.objects.get(client_id = data['first_client_id'])
clients.objects.get(client_id = data['second_client_id'])
except clients.DoesNotExist:
raise serializers.ValidationError("One of the clients does not exist")
return data
class Meta:
model = transfermoney
fields = ('__all__')
read_only_fields = ('time','date',)
my views.py is :
class transferingmoney(APIView):
def post(self,request):
serializer = moneytransfer(data=request.data)
if serializer.is_valid():
serializer.save()
def update(self,data):
client_1 = clients.objects.get(client_id=data['first_client_id'])
client_2 = clients.objects.get(client_id=data['second_client_id'])
client_1.money -= data['amountofmoney']
client_2.money += data['amountofmoney']
client_1.save()
client_2.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
i'm using django rest framework, when i made a post request to "transferingmoney" , it made a record into the "transfermoney" model table ,, but it did not update the "money" field for client_1 or client_2 in the "clients" model
please can you help me, what should i do ?
Upvotes: 0
Views: 64
Reputation: 1394
The issue is that you have created the function update
but never called it. Your view should look like this:
class transferingmoney(APIView):
def post(self,request):
serializer = moneytransfer(data=request.data)
if serializer.is_valid():
serializer.save()
client_1 = clients.objects.get(client_id=serializer.data['first_client_id'])
client_2 = clients.objects.get(client_id=serializer.data['second_client_id'])
client_1.money -= serializer.data['amountofmoney']
client_2.money += serializer.data['amountofmoney']
client_1.save()
client_2.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Upvotes: 1