2016-04-28 50 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

相關問題