有效载荷无效的原因.串行器.ModelSerializer|问题在哪里?|Django |视图



我正在编写预订部分的api
我正在努力做一个管理项目。注册已经失败,我必须制作rest api。当我从邮递员传递值时,它显示这些错误
Models.py

class BookingRegister(models.Model):
STATUS = [('Booked','Booked'), ('InTransit','InTransit'), ('AtDestination','AtDestination'), ('Delivered','Delivered'), ('Return','Return')]
PAYMENT_TYPE = [('Paid','Paid'), ('ToPay','ToPay'), ('ToBeBilled','ToBeBilled')]
TRANSPORT_MODE = [('AIR','AIR'), ('ROAD','ROAD'), ('WATER','WATER')]
PACKAGE_TYPE = [('TIN','TIN'), ('BOX','BOX'), ('BUNDLE','BUNDLE'), ('CARTOON','CARTOON')]
TAX_PERCENTAGES = [(5,'5%'), (8,'8%'), (10,'10%'), (15,'15%'), (18,'18%')]
RATE_AS_PER = [('QTY','QTY'), ('WT','WT')]
id = models.AutoField(primary_key=True)
#bookingDetails=models.OneToOneField(BookingRegisterDetails, on_delete=models.CASCADE)
status = models.CharField(max_length=15, choices=STATUS)
paymentType = models.CharField(max_length=10, choices=PAYMENT_TYPE)
consignor = models.ForeignKey(Party, on_delete=models.CASCADE, related_name='consignor')
consignee = models.ForeignKey(Party, on_delete=models.CASCADE, related_name='consignee')
origin = models.ForeignKey(City, on_delete=models.CASCADE, related_name='origin')
destination = models.ForeignKey(City, on_delete=models.CASCADE, related_name='destination')
bookingPoint = models.ForeignKey(Branch, on_delete=models.CASCADE, related_name='bookingPoint')
deliveryPoint = models.ForeignKey(Branch, on_delete=models.CASCADE, related_name='deliveryPoint')
bookingDate = models.DateField()
transportMode = models.CharField(choices=TRANSPORT_MODE, default='ROAD', max_length=15)
createdTime = models.DateTimeField(editable=False, default=datetime.now)
updatedTime = models.DateTimeField(editable=False, default=datetime.now)
packageType = models.CharField(choices=PACKAGE_TYPE, default='CARTOON', max_length=15)
itemName = models.CharField(max_length=30)
quantity = models.IntegerField()
actualWeight = models.FloatField(default=0)
grossWeight = models.FloatField(default=actualWeight)
taxPercentage = models.IntegerField(choices=TAX_PERCENTAGES)
rateAsPer = models.CharField(choices=RATE_AS_PER, max_length=5)
rate = models.FloatField()
serviceCharge = models.FloatField(default=0)
bookingCharge = models.FloatField(default=0)
loadingCharge = models.FloatField(default=0)
unloadingCharge = models.FloatField(default=0)
total = models.FloatField(default=0)
def __str__(self) -> str:
return str(self.id)+" "+self.status+" "+self.paymentType+" "+self.consignor+" "+self.consignee <br>

views.py

class BookingRegisterAPI(APIView):
def get(self, request, id=None, format=None):
if id:
try:
booking=BookingRegister.objects.get(pk=id)
#bookingDetails=BookingRegisterDetails.objects.select_related(bookingId=id)
serializer = TransportSerializer.BookingRegisterSerializer(booking)
return Response(serializer.data)
except:
return Response("No record found", status=status.HTTP_404_NOT_FOUND)
def post(self, request, id=None, format=None):
serializer=TransportSerializer.BookingRegisterSerializer(data=request.data)
print(serializer.build_unknown_field)
try:
print("go")

if serializer.is_valid():
print("val")
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response("Not valid")
except:
return Response("Please enter valid data", status=status.HTTP_208_ALREADY_REPORTED)

序列化程序.py

class TransportSerializer:
class BranchSerializer(serializers.ModelSerializer):
class Meta:
model=Branch
fields=['id', 'name', 'cityId']
class PartySerializer(serializers.ModelSerializer):
class Meta:
model=Party
fields=['id', 'firstName', 'lastName', 'cityId', 'adhaar']
class BookingRegisterSerializer(serializers.ModelSerializer):
class Meta:
model=BookingRegister
fields=['id', 'status', 'paymentType','consignor', 'consignee', 
'origin', 'destination', 'bookingPoint', 'deliveryPoint', 'bookingDate', 
'packageType', 'itemName', 'quantity', 'actualWeight', 'grossWeight',
'taxPercentage', 'rateAsPer', 'rate', 'serviceCharge', 'bookingCharge', 
'loadingCharge', 'unloadingCharge','total']

我的邮递员有效载荷

{
"status": "Booked",
"paymentType":"Paid",
"consignor":1, 
"consignee":2, 
"origin":1, 
"destination":2, 
"bookingPoint":4,
"deliveryPoint":5, 
"bookingDate":"21/08/2022",
"packageType":"BOX", 
"itemName":"Medicine", 
"quantity":5, 
"actualWeight":"50", 
"grossWeight":50,
"taxPercentage":"5%", 
"rateAsPer":"QTY", 
"rate":10, 
"serviceCharge":0, 
"bookingCharge":0, 
"loadingCharge":0, 
"unloadingCharge":0,
"total":50

}

我不知道我在哪里犯错误。有人能帮我吗。

有效负载中存在错误。我们可以通过->print(serializer.error_messages)

最新更新