程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

django使用序列化器嵌套問題

編輯:Python

當我在使用序列化器嵌套的時候遇到了一個問題

#這是我的模型信息 一個訂單中存在多個商品信息 是一對多關系,所以在商品信息中有一個ForeignKey用來關聯訂單class Order(models.Model): '''訂單信息''' order_code = models.CharField(max_length=36,verbose_name='訂單編號',default=uuid.uuid4()) order_status = models.BooleanField(verbose_name='訂單狀態',default=False,help_text='0:未完成,1:已完成') order_hostman = models.CharField(verbose_name='送貨員姓名',default='張三',max_length=16) order_hostman_tel = models.CharField(verbose_name='送貨員手機號碼',default='17797970000',max_length=11) create_time = models.DateTimeField(auto_now_add=True,verbose_name='訂單創建時間') complete_time = models.DateTimeField(auto_now=True,verbose_name='訂單完成時間') # order_price = models.FloatField(verbose_name='訂單支付金額') order_phone = models.ForeignKey(Userinfo,verbose_name='訂單所屬人',on_delete=models.CASCADE)class OrderItem(models.Model): '''訂單項信息''' item_code = models.ForeignKey(Order,on_delete=models.CASCADE,verbose_name='商品所屬訂單關聯外鍵') commodity = models.CharField(max_length=32,verbose_name='食物名稱') commodity_quantity = models.IntegerField(verbose_name='商品數量',default=1) commodity_price = models.FloatField(verbose_name='單價')
#這是我的序列化器class orderItemSerializer(serializers.ModelSerializer): # 重寫返回字段使展示更直觀 class Meta: model = OrderItem fields = ['commodity',"commodity_quantity","commodity_price","item_code"]class orderSerializer(serializers.ModelSerializer): # orderitem_set = serializers.PrimaryKeyRelatedField(read_only=True, many=True) orderitem_set = orderItemSerializer(many=True,read_only=True) class Meta: model = Order fields = '__all__' depth = 1
#這是我的views.py中這個視圖class Checkout(views.APIView): def get(self,request): '''獲取下單信息''' # 獲取從中間件中封裝的用戶信息 cache = caches['id_code'] # print(request.META.get('HTTP_AUTHORIZATION')) userphone = cache.get(request.META.get('HTTP_AUTHORIZATION'))  user = Userinfo.objects.filter(tel_phone=userphone).first() #通過傳遞過來的用戶信息獲取用戶實例化對象 data = Order.objects.filter(order_phone=user) #獲取這個用戶的所有訂單信息 ser_list = orderSerializer(instance=data, many=True) #對訂單信息進行序列化 return Response({
"code":200,"msg":'成功',"data":ser_list.data})

這是我發送請求後收到的數據樣式,

希望有人能來幫幫我


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved