Django:如何用ORM连接没有外键的列

2024-04-27 04:05:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Django和Python的新手,我无法找到这个问题的解决方案,因此任何帮助都是非常感谢的!在

我尝试在Django中连接数据库列,这些列有相应的值,但该值不是外键。在

假设我的模型是:

class Order(models.Model):
   order_id = models.AutoField(primary_key=True)
   oOrder_number = models.CharField(max_length=50)
   ...

以及

^{pr2}$

我知道的是,我可以使用Djangosselect_related命令从与外键连接的表中获取值。在

但我的问题是:我不能在我的模型中使用外键,原因是第三方软件在我的API上推送数据。该软件无法存储已创建订单的返回值并将其用作装运的标识符(…)。在

最后,我的问题是:是否可以使用相同的字段oOrder_number和{}进行一些连接?在

我想要的结果是,我可以选择一个特定的订单,并从Shipment表中获取所有连接的装运,这将具有相同的dTo_订单。在

我知道如何在Larvel和MySQL查询中实现这一点,但据我所知,使用原始查询并不是“djangish”。在

有什么想法吗?在

谢谢你的阅读!如果我遗漏了什么,我很乐意提供所有必要的信息!:)

编辑:我知道我可以尝试一种解决方法,通过搜索订单表中的to峎order字段并获取其主键来获取装运订单的外部信息。不过,我很好奇Django是否有更优雅的解决方案。在

更新:

这是我想象的。在

  • 我像orders=Order.objects.all()一样从数据库获取订单。在
  • 我做了一些魔术,以便对于每个订单对象,都将有一个数组或任何与属于订单的所有装运数据
  • 我将数据传递到我的模板。在这里,我想做些类似的事情:

    {%订单%}

    在{{订单号}}在

    {%用于装运订单.装运%}在

    {{跟踪号装运}}在

    {%endfor%}

    {%endfor%}


Tags: 数据django订单模型信息数据库numbermodels
1条回答
网友
1楼 · 发布于 2024-04-27 04:05:00

您可以将^{} expressionOuterRef一起使用:

from django.db.models import OuterRef, Subquery
shipments = Shipment.objects.filter(dTo_order=OuterRef('oOrder_number'))
Order.objects.annotate(shipments=Subquery(shipments.values('dShipment_id', 'trackingno')))

相关问题 更多 >