如何在Django rest fram中获取post响应的主键值

2024-09-29 23:31:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是Django Rest框架。我用的是post方法。在调用post方法之后,我需要获取post调用响应中的主键。你知道吗

这是我的序列化程序代码:

from rest_framework import serializers from .models import ImtsRequest, MercadoPagoPayment class MercadoPagoPaymentSerializer(serializers.ModelSerializer): # paymentRequestID = serializers.IntegerField(read_only=False) class Meta: model = MercadoPagoPayment fields = '__all__' # read_only_fields = ('CreatedDateTime','paymentRequestID') def create(self, validated_data): data = MercadoPagoPayment(token = validated_data['token'], payment_method_id = validated_data['payment_method_id'], issuer_id = validated_data['issuer_id'],installments = validated_data['installments'], order_id = validated_data['order_id'], payer_email = validated_data['payer_email'], transaction_amount = validated_data['transaction_amount'], capture = validated_data['capture'], requestjsondata = validated_data['requestjsondata']) data.save() print(data.paymentRequestid) return data

这是我的模型:

from django.db import models # Create your models here. class MercadoPagoPayment(models.Model): paymentRequestid = models.AutoField(db_column="paymentRequestid", primary_key=True) token = models.CharField(max_length=32, blank=False, null=True) payment_method_id = models.CharField(max_length=10, blank=True, null=True) issuer_id = models.IntegerField(db_column='Issuer_id', null=True) installments = models.IntegerField(db_column='installments', null=True) order_id = models.CharField(max_length=32, blank=False, null=True) payer_email = models.CharField(max_length=200, blank=True, null=True) transaction_amount = models.FloatField(blank=False, null=False) capture = models.BooleanField(default=False) requestjsondata = models.TextField(db_column='requestjsondata', null=True) CreatedDateTime = models.DateTimeField(db_column='CreatedDateTime', null=False, auto_now_add=True) # Field name made lowercase. class Meta: managed = True db_table = 'MercadoPago_Payment'

这是我的观点:

from django.shortcuts import render from django.http import Http404, HttpResponse, JsonResponse from rest_framework.views import APIView from rest_framework.response import Response from rest_framework.renderers import JSONRenderer from rest_framework.parsers import JSONParser from rest_framework import status, generics from .serializers import * from .models import * import json # Create your views here. class MercadopagoCreatePayment(APIView): def post(self, request, format=None): request.data['requestjsondata'] = json.dumps(request.data['requestjsondata']) requestData = MercadoPagoPaymentSerializer(data = request.data) if requestData.is_valid(): requestData.save() return Response(request.data, status=status.HTTP_201_CREATED)

我在serializers create方法中获得了paymentRequestid。但我无法在回复中找到那个身份证。你知道吗

我怎样才能得到主键?你知道吗

谢谢你


Tags: fromimportrestidfalsetruedbdata
1条回答
网友
1楼 · 发布于 2024-09-29 23:31:35

你知道吗请求数据。保存()返回主键和所有字段。它是序列化程序返回响应。你知道吗

from django.shortcuts import render from django.http import Http404, HttpResponse, JsonResponse from rest_framework.views import APIView from rest_framework.response import Response from rest_framework.renderers import JSONRenderer from rest_framework.parsers import JSONParser from rest_framework import status, generics from .serializers import * from .models import * import json # Create your views here. class MercadopagoCreatePayment(APIView): def post(self, request, format=None): request.data['requestjsondata'] = json.dumps(request.data['requestjsondata']) requestData = MercadoPagoPaymentSerializer(data = request.data) if requestData.is_valid(): SerializerResponse = requestData.save() request.data['id'] = SerializerResponse.pk return Response(request.data, status=status.HTTP_201_CREATED)

相关问题 更多 >

    热门问题