2017-12-27 21 views
-1

Djangoモデルの場合、特別な月を設定するために余分なフィールドが必要でした。これは、choice属性とタプルのセットで行われました。タプルのタプル値をインデックスで取得する

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) 

管理セクションでこれは素晴らしいです。 「:タプルではないX(X)tuple.index」:今、私は私のテンプレートの月出力したい

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

しかし、私は、メッセージが表示されました。何が間違っていたのですか?

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)の最初の値のみ:

答えて

1

Djangoには、self.get_tldate_mth_display()のショートカットがあります。

(あなたのコードが失敗した理由は、それがまったく.index()のものであるから、self.MONTHS[self.tldate_mth-1][1]を実行する必要がありますが、既に組み込まれている方法がある場合は、そうする必要はありません)。

0

はこれを試してみてください。

関連する問題