用于加载外键对象的Django方法

时间:2018-02-07 00:06:00

标签: django django-models

假设我有一个模型Parent,它有一个ForeignKey来模型Child:

class Parent(models.Model):
    child = models.ForeignKey(Child, related_name='parents')

class Child(models.Model):
    some fields here

我知道如果我有一个Parent对象并且想要获取相关的Child对象,我可以简单地使用:

childObj=parent.child

如果尚未加载子级,则上面将向DB发出另一个查询,以在parent.child中实例化Child。

但是,假设每次我想做这样的事情,我也想做一些额外的处理。换句话说,当我调用parent.child时调用的方法是我想要覆盖的方法,所以我可以进行额外的处理。有谁知道这个方法是什么,或者我怎么能做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以制作child财产。

class Parent(models.Model):
    _child = models.ForeignKey(Child, related_name='parents')

    @property
    def child(self):
        child = self._child
        # extra processing here
        return child

class Child(models.Model):
    some fields here