2016-04-28 49 views
0

我有一系列模型有字段被迁移到FK。如何在Django模型中为外键字段创建可查询别名?

class Sizing(models.Model: 
    btu_hour = models.IntegerField() 
    flange = models.ForeignKey('parts.Router') 

以前

class Sizing(models.Model): 
    btu_hour = models.IntegerField() 
    configuration = models.ForeignKey(Configuration) 
    ### WHAT I'D LIKE; alias only ### 
    flange = Alias(to='configuration__flange') 

class Configuration(models.Model) 
    flange = models.ForeignKey('parts.Router') 

假设我有我的观点,即做对flange现场查找查询后,我怎样才能创建别名?我有很多模型正在以上述方式进行重构,并且希望使用这种方法,以便我不必在视图中替换该字段的所有用途等。

希望能够使用任何指针;模型别名的所有信息我发现只适用于相同模型的字段。

回答

1

最简单的方法是创建一个@property

class Sizing(models.Model): 
    btu_hour = models.IntegerField() 
    configuration = models.ForeignKey(Configuration) 

    # define the property flange 
    @property 
    def flange(self): 
     return self.configuration.flange 

然后,在任何的意见,如果你有一个sizing_obj.flange它不会在所有受到影响。

但是,你不能在查询集或过滤器等

+0

谢谢,但寻找的东西,会在过滤/查询集使用以及使用它。希望避免在几十个模型中重构,但认为这可能是唯一的方法。 –

+0

在查询集中可以用于过滤的唯一条目是在模型本身上定义为字段的条目。在这种情况下,由于您与'Flange'对象没有直接关系,所以我不确定您可以对此进行过滤。唯一的办法是通过中间模型,例如在这里你可以做'configuration__change'。我似乎无法找到其他任何东西。 – AKS

相关问题