2011-04-07 50 views
2

我正在填充表单choicefield的选择在Django,这是一个每年选择字段,我从数据库中获取年,并把它们在外地元组的列表。我的代码看起来像这样缓存问题Django表单

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)装饰,但不工作。我能做什么??

在此先感谢!

回答

9

更新几年,当你初始化一个表单实例。

def __init__(self, *args, **kwargs): 
    super(MyForm, self).__init__(*args, **kwargs) 
    self.fields['year'].choices = self.get_years() 
+0

喔许多感谢的人!这个对我有用!!再见 – eos87 2011-04-07 20:08:38