2016-10-20 60 views
0

我有一個django模板,我將一個值分配給模板變量,但我需要使用該值來訪問特定對象。即:Django模板{%with%}使用變量作爲對象值

{% with operations.type as type %} 
    {{ models.{{type}} }} <!-- HOW DO I DO THIS? --> 
    {% endwith %} 

有沒有標籤/過濾器,我不知道?謝謝。

真的模板我只想做:

type = "MyType1" 
data = models.type 

我的數據看起來像(JSON):

{ 
    "models": { 
     "MyType1": { "data": "somemoredata" }, 
     "MyType2": { "data": "somemoredata" }, 
     "MyType3": { "data": "somemoredata" }, 
    } 
} 
+0

我認爲你必須做自定義過濾器。 – itzMEonTV

+0

第一條規則 - 不要將邏輯放入模板中。只有意見。 –

回答

0

不是直接的,但你可以做一個custom filter和做一些事情,如:

@register.filter(name='getattr') 
def get_a_field(obj_id, attr_str): 
    my_obj = MyModel.objects.get(id=obj_id) 
    return getattr(my_obj, attr_str) 

{% with operations.type as type %} 
    {{ models|getattr:type }} 
    {% endwith %} 
+0

很感謝。我認爲這讓我走向了正確的方向。然而,我收到一個錯誤:「'dict'對象沒有屬性'MyTypeValue'」 - 它的確如此。 – dimxasnewfrozen

+0

我傳遞了可能最終被序列化的對象。你可以只是獲取值字典樣式或傳遞對象ID到過濾器,並獲得對象 –

+0

對不起。我並不完全遵循。 「類型」實際上是這個對象中的一個索引 – dimxasnewfrozen