2

djangoのフォームchoicefieldの選択肢を入力しています。これは年選択フィールドです。データベースから年を取得し、フィールドのタプルのリストに入れます。私のコードは次のようになります

def get_years():
    choices = []
    years = []
    for en in Encuesta.objects.all().order_by('fecha'):
        years.append(en.fecha.year)
    for year in list(set(years)):
        choices.append((year, year))
    return choices

私のフォームフィールドは次のようになります

year = forms.ChoiceField(choices=get_years())

問題は、ブラウザで表示した場合、データベースによると年のリストは正常ですが、データベースの日付を変更しても、年の選択リストが更新されないことです。幅デコレータを試しまし@cache_control(no_cache=True)たが、機能しません。私に何ができる??

前もって感謝します!

4

1 に答える 1

10

フォームインスタンスを初期化するときに年を更新します。

def __init__(self, *args, **kwargs):
   super(MyForm, self).__init__(*args, **kwargs)
   self.fields['year'].choices = self.get_years()
于 2011-04-07T20:02:48.157 に答える