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 (将#修改为@)