我使用的是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。但我无法在回复中找到那个身份证。你知道吗
我怎样才能得到主键?你知道吗
谢谢你
你知道吗请求数据。保存()返回主键和所有字段。它是序列化程序返回响应。你知道吗
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)
;相关问题 更多 >
编程相关推荐