2015-11-05 63 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

不,它必须工作 –

相关问题