python - 从 django 中的另一个模型更新模型的字段
问题描述
我的models.py是:
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)
我的 serializers.py 是:
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',)
我的views.py是:
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)
我正在使用 django rest 框架,当我向“transferingmoney”发出发布请求时,它在“transfermoney”模型表中做了记录,但它没有更新“clients”中 client_1 或 client_2 的“money”字段“ 模型
请你能帮帮我,我该怎么办?
解决方案
问题是您创建了该函数update
但从未调用它。您的视图应如下所示:
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)
推荐阅读
- django - 在 django 中突出显示搜索到的文本
- netsuite - 在工作流操作脚本中获取工作流字段值
- google-cloud-platform - 谷歌云:计算虚拟机实例每天自动关闭,如何停止?
- matlab - 如何将加权因子添加到邻接矩阵中?
- amazon-web-services - 运行 amplify init --appId XXX 时出现语法错误
- android - 了解 Android Room 迁移,应用程序的首次和后续运行
- arrays - 快速获取数组中的一个数组
- android - GsonBuilder().excludeFieldsWithModifiers() 在迁移到 AndroidX 后无法在发布版本中工作
- mysql - 从 MySQL 中现有表行的总和创建新表
- spring-security - 如何集成 GLUU 和 ADFS