django 中选择字段如何显示文字

本文探讨了在Django中如何将ChoiceField的选择项显示为对应的文本而非默认的值。通过使用`get_FIELDNAME_display()`方法可以在模型的`__str__`方法中直接返回友好的文本描述。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在写博客的例子时,遇到的问题:

有两个涉及到choice field:

    Technology = 't'
    Book = 'b'
    Life = 'l'
    Data = 'd'
    Tips = 'm'
    CATEGORY_CHOICES = (
        (Technology, '技术交流'),
        (Book, '书籍'),
        (Life, '生活'),
        (Data, '数据分析'),
        (Tips, '短消息'),
    )

    name = models.CharField(verbose_name='类名', choices=CATEGORY_CHOICES, max_length=1, default='t')

    def __str__(self):
        return self.name

    # 文章状态
    STATUS_CHOICES = (
        ('d', '草稿'),
        ('p', '已发布'),
    )
    status = models.CharField(verbose_name='发布状态', choices=STATUS_CHOICES, max_length=1, default='d')
    def __str__(self):
        return self.title

  最后 的结果是:

 

 

 我知道在模板中是可以通过下面的方式来实现

{{ {{book.get_category_display }}

   由于这用的是xadmin的后台,所以用这种方式是不现实的

那么有没有在python代码中实现的方法呢,

方法如下:

    def __str__(self):
        return self.get_name_display()

  

同时这里注意到,第二个choice field中的status并没有用这个方法而能正常显示,可能是xadmin已经设计好了,

但是category中的name却没有正常显示可能与它是唯一的字段有关, 有待验证.

posted on 2018-03-17 11:00 Andy_963 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/Andy963/p/8588244.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值