通过索引获取元组中的元组值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过索引获取元组中的元组值相关的知识,希望对你有一定的参考价值。

对于Django模型,我需要一个额外的字段来设置特殊月份。这是使用选择属性和元组集完成的:

class Timeline(models.Model):

    MONTHS = (
        (1, _("January")),
        (2, _("February")),
        (3, _("March")),
        (4, _("April")),
        (5, _("May")),
        (6, _("June")),
        (7, _("July")),
        (8, _("August")),
        (9, _("September")),
        (10, _("October")),
        (11, _("November")),
        (12, _("December")),
    )

    tldate_mth = models.IntegerField(_("Month"), choices=MONTHS, default=1)

在管理部分,这很棒。现在我想在我的模板中输出月份:

 # ...
 def to_string(self):
    return "%s (%s / %d)" % (self.title, self.MONTHS.index(self.tldate_mth), self.tldate_yr)

但后来我得到了消息“tuple.index(x):x不在元组中”。我错了什么?

答案

Django为您提供了一个快捷方式:self.get_tldate_mth_display()

(你的代码失败的原因是.index()完全没有;你应该只做self.MONTHS[self.tldate_mth-1][1];但是,正如我所说,当已经有内置方式时,没有必要这样做。)

另一答案

试试这个:

def to_string(self):
    return "%s (%s / %d)" % (self.title, [month[0] for month in self.MONTHS].index(self.tldate_mth), self.tldate_yr)

Django仅为选择字段存储元组的第一个值(在本例中为值1-12)。

以上是关于通过索引获取元组中的元组值的主要内容,如果未能解决你的问题,请参考以下文章

Python元组

我的元组中的那些小“u”是啥? (python 2.7)[重复]

Python中的元组(Tuple)

如何在 django 模板的 forloop 中访问 If 语句中的元组值?

元组中的元素到 Bag Pig 中的元组

为元组中的每个元素命名,提高程序可读性