我是Django和Python的新手,我无法解决这个问题,所以任何帮助都是值得感谢的!
我正在尝试连接Django中的数据库列,这些列确实有相应的值,但该值不是外键。
让我们说我的模特是:
class Order(models.Model):
order_id = models.AutoField(primary_key=True)
oOrder_number = models.CharField(max_length=50)
...
和
class Shipment(models.Model):
dShipment_id = models.AutoField(primary_key=True)
dTo_order = models.CharField(max_length=10)
...
我所知道的是,我可以使用Djangos select_related
命令从表中获取与外键连接的值。
但我的问题是:我不能在这里的模型中使用外键,原因在于第三方软件将数据推到API上。该软件无法存储从创建的订单返回的值,并将其用作货件的标识符(.)。
最后,这里是我的问题:是否可以使用相同的字段oOrder_number
和dTo_order
进行一些连接?
我想要的结果是,我可以选择一个特定的订单,并从that表中获取所有已连接的货物,这都将具有相同的dTo_order。
我知道如何在Larvel和MySQL Querie中这样做,但据我所知,使用原始querie不是"Djangoish“.。
对此有什么想法吗?
感谢您的阅读!如果我遗漏了什么,我很乐意提供所有必要的信息!:)
编辑:我知道我可以尝试一个解决办法,通过搜索To_order字段的order表并获得它的主键来获得订单的。然而,我很好奇在Django中是否有一个更优雅的解决方案。
更新:
以下是我的想象。
orders=Order.objects.all()
一样从DB中获取订单。发布于 2018-10-24 05:27:03
可以将 expression与OuterRef
结合使用。
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')))
https://stackoverflow.com/questions/52969759
复制相似问题