可以检索相关的调用者实例吗? (Django的)

时间:2015-07-10 09:58:29

标签: python django django-models

有两个相关的django模型,例如:

from django.db import models

class Shipping(models.Model):
    def calc_by_order(self):
        # calculate shipping by order's total
        return SHIPPING_RATE * ??? # self.order_set.<something>

class Order(models.Model):
    shipping = models.ForeignKey(Shipping)
    total = models.DecimalField()

好奇,是否可以在Shipping.calc_by_order可选地反向引用调用者实例并将其用于其方法访问:

order = Order.objects.last()
print order.shipping.calc_by_order()

我可以明确地将订单的实例传递给calc_by_order,但是如果真的有必要感兴趣。

我也知道可以在calc_by_order模型上定义Order方法,但这不是一个选项。

1 个答案:

答案 0 :(得分:0)

似乎没有额外的Django基础设施来支持所请求的功能。它归结为Python的代码内省方式,可与inspect标准模块及其方法一起使用。绝对不是生产解决方案,猴子修补或子类化似乎相形见绌。