通过索引获取元组中的元组值
Get a tuple value in a tuple by index
对于 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 not in tuple"。我做错了什么?
试试这个:
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)。
Django 为您提供了一个快捷方式:self.get_tldate_mth_display()
.
(您的代码失败的原因是那根本不是 .index()
所做的;您应该只做 self.MONTHS[self.tldate_mth-1][1]
;但是,正如我所说,当已经有内置的方法了。)
对于 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 not in tuple"。我做错了什么?
试试这个:
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)。
Django 为您提供了一个快捷方式:self.get_tldate_mth_display()
.
(您的代码失败的原因是那根本不是 .index()
所做的;您应该只做 self.MONTHS[self.tldate_mth-1][1]
;但是,正如我所说,当已经有内置的方法了。)