err*_*ona 6 python mysql django django-models
我 \xc2\xb4m 是 Django 和 Python 的新手,我可以 \xc2\xb4t 得到这个问题的解决方案,所以任何帮助都是值得赞赏的!
\n\nI\xc2\xb4m 尝试连接 Django 中的数据库列,这些列确实有相应的值,但该值不是外键。
\n\n让\xc2\xb4s 说我的模型是:
\n\nclass Order(models.Model):\n   order_id = models.AutoField(primary_key=True)\n   oOrder_number = models.CharField(max_length=50)\n   ...\n和
\n\nclass Shipment(models.Model):\n  dShipment_id = models.AutoField(primary_key=True)\n  dTo_order = models.CharField(max_length=10)\n  ...\n我所知道的是,我可以使用 Djangoselect_related命令从与外键连接的表中获取值。
但这是我的问题:我不能在我的模型中使用外键,其原因源于通过我的 API 推送数据的第三方软件。该软件无法存储所创建订单的返回值并将其用作发货的标识符(...)。
\n\n所以最后这是我的问题:是否可以对相同的字段oOrder_number和进行一些连接dTo_order?
我想要的结果是,我可以选择某个订单并从 Shipment 表中获取所有连接的货件,这些货件都具有相同的 dTo_order。
\n\n我知道如何在 Larvel 和 MySQL Querie 中执行此操作,但据我所知,\xc2\xb4s 不是“Djangoish”来使用原始查询...。
\n\n对此有什么想法吗?
\n\n谢谢阅读!如果我遗漏了一些内容,我将很乐意提供所有必要的信息!:)
\n\n编辑:我知道我可以尝试一种解决方法,通过在订单表中搜索 To_order 字段并获取其主键来获取发货订单的外部。不过我很好奇 Django 中是否有更优雅的解决方案。
\n\n更新:
\n\n这是我的想象。
\n\norders=Order.objects.all()。我将数据传递到我的模板。在这里我想做类似的事情:
\n\n{% 表示订单中的订单 %}
\n\n{{订单.o订单号}}
\n\n{订单中发货的%.shipments %}
\n\n{{shipment.trackingno}}
\n\n{% 结束 %}
\n\n{% 结束 %}
您可以使用以下Subquery表达式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')))