如何解决Django 从使用外键连接的多个模型中获取数据
我是 Django 的新手,目前正在处理我的第一个项目。我的模型设计如下:
class BasketProductMapping(models.Model):
product_reference = models.ForeignKey(Product,default=1,null=True,blank=True,on_delete=models.CASCADE)
mapped_basket_name = models.CharField(max_length=5,null=False,blank=False)
mapped_product_name = models.CharField(max_length=30,blank=False)
def __str__(self):
return self.mapped_basket_name
class ShelfBasketMapping(models.Model):
mapped_basket_name_reference= models.ForeignKey(BasketProductMapping,on_delete=models.CASCADE,default=1)
mapped_name_shelf = models.CharField(max_length=15,blank=False,default='default')
mapped_name_basket = models.CharField(max_length=15,default="default")
def __str__(self):
return self.mapped_name_shelf
class KioskShelfMapping(models.Model):
mapped_shelf_basket_name_reference = models.ForeignKey(ShelfBasketMapping,default=1)
mapped_shelf_name = models.CharField(max_length=15,default="default")
mapped_kiosk_name = models.CharField(max_length=15,default="default")
def __str__(self):
return self.mapped_shelf_name
假设我的第一个模型有这样的数据:
B1 - P1
B1 - P2
B2 - P1
B3 - P1
对于我的第二个模型,我的数据如下:
S1 - B1
S2 - B2
S1 - B3
最后,对于我的第三个模型,我的数据如下:
K1 - S1
K2 - S2
这是我的 serializers.py:
class KioskShelfMappingGetSerializer(serializers.ModelSerializer):
class Meta:
model = KioskShelfMapping
fields = ['id','mapped_shelf_basket_name_reference','mapped_shelf_name','mapped_kiosk_name','shelf_position']
depth = 2
这是我的 views.py 文件:
class KioskShelfgetViewSet(APIView):
def get(self,request):
kioskShelfMappingData = KioskShelfMapping.objects.all()
serializer = KioskShelfMappingGetSerializer(kioskShelfMappingData,many=True)
response = {'status':1,'message':"Kiosk Shelf Mapping List",'data':serializer.data}
return JsonResponse(response,safe=False)
我正在尝试将所有数据一起显示在一个表格中。但是我得到的数据是这种格式的:
K1 - S1 - B1 - P1
K2 - S2 - B2 - P1
但我需要接收以下格式的数据:
K1 - S1 - B1 - P1
K1 - S1 - B1 - P2
K1 - S1 - B3 - P1
K2 - S2 - B2 - P1
我无法理解为什么我没有获取全部数据,因为它们是使用外键连接的。请让我知道我哪里出错了。非常感谢您提前提供帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。