2015-11-05 59 views
4

嗨我的項目在Django和一些AngularJS上工作。我想將我的Django模型字段值映射到一些自定義字符串值。以下是我的模型,如何將Django模型字段映射到某些用戶定義的值

class History(models.Model): 
    TYPE_CHOICES = (
     (1, 'CREATE'), 
     (0, 'EDIT'), 
     (2, 'DELETE'), 
    ) 
    user = models.ForeignKey(User, related_name='+') 
    mw = models.ForeignKey('CP', related_name="history") 
    field_name = models.CharField(max_length=192, null=False) 
    old_value = models.CharField(max_length=500, null=True, blank=True) 
    new_value = models.CharField(max_length=500, null=True, blank=True) 
    type = models.IntegerField(default=0, choices=TYPE_CHOICES) 
    date_created = models.DateTimeField(auto_now_add=True) 

類型1,2和0,我需要在我的網站上顯示。所以我只是通過<td>{{t.type}}</td>作爲值,但它給我的值爲1,2和0.我怎樣才能顯示它創建,更新或刪除字符串值?任何想法的傢伙?提前致謝。

回答

1

請大家注意,如果你的Django混合模板語言和像(angularjs)一些其他的模板語言會有不同的結局。

所以我假設你正在使用角?如果多數民衆贊成的情況下 試試這個

<!-- if using angular js --> 

{% verbatim %} 
    {{ data.angular_t }} {{ angularvariablescope }} 
{% endverbatim %} 

<!-- all django varibale --> 

{{t.type}} to {{ t.get_type_display }}. {# django variable #} 

或您model.py

@property 
def angular_t(self) 
    return self.get_type_display() 

檢索您的資源,財產(tastypie)

class Resource(ModelResource): 
    angular_t = fields.CharField(attributes='angular_t', null=True) 
+0

哇!真棒。那就是我正在尋找的東西。謝謝Jonard23 :) – vellattukudy

6

在您的模板更改{{t.type}}{{ t.get_type_display }}

您可以在文檔閱讀一下:get_FOO_display docs

+0

對不起很新的Django的,是什麼是get_type_display?它是用戶定義的定義嗎?如何做迪馬? – vellattukudy

+0

所以我不需要在模型上做任何事情?我在哪裏可以稱之爲FOO方法?在視圖中? – vellattukudy

+0

不,它必須工作 –

相關問題