Django中的反向自引用外键

5 投票
1 回答
2086 浏览
提问于 2025-04-17 16:02

抱歉,如果这个问题听起来很傻,但我对Django还不太熟悉,找不到答案。

我有一个订单模型,其中有一个自引用的字段:

source = models.ForeignKey(
    'self',
    help_text = "[redacted]",
    verbose_name = "Source Order",
    blank = True,
    null = True,
)

虽然如果我有一个订单,想知道它的来源,这样做没问题,但我还需要获取这个订单的“子订单”列表,也就是说,找出哪些订单是以这个订单为来源的。请问这需要通过filter()来实现,还是有更简单、更符合Django风格的方法呢?

1 个回答

7

如果你有一个订单对象,你可以使用反向关系

child_orders = my_order.order_set.all()

你可能想给source字段一个更有描述性的related_name值,这样就可以用这个值来代替上面提到的order_set

撰写回答