微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Django 从使用外键连接的多个模型中获取数据

如何解决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 举报,一经查实,本站将立刻删除。